PDA

View Full Version : [MySQL] Lỗi không hiển thị tiếng việt trong DATABASE!



Thế Giới Phẳng
02-06-2010, 13:48
Lỗi không hiển thị tiếng việt!



CREATE TABLE `user` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',

PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Trong file config.php

[CODE]
@mysql_query("SET NAMES 'utf8'"); // Để nó hiển thị tiếng việt trên web

Vì khi trong csdl tiếng việt thì trên web nó lại hiện dạng: ?ang ti?p t?c (Đang tiếp tục) nên mình thêm dòng đó để nó hiện thành: Đang tiếp tục.

Tuy nhiên, khi mình nhập từ form, gõ "Đang cập nhật" trong csdl lại lưu "Đang cập nhật", Nên trên web nó cũng hiện "Đang cập nhật" luôn.

Các bạn biết vấn đề của mình ở đây là gì ko? Giúp mình nhá

honnhienh
02-06-2010, 13:50
bạn coi cái meta.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Thế Giới Phẳng
02-06-2010, 13:50
bạn coi cái meta.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Mình thêm đoạn này ở tất cả các trang rồi bạn à! Thế mới là vấn đề chứ. Có bạn nào biết vấn đề của mình ở đay là gì ko ạ?

honnhienh
02-06-2010, 13:52
name` varchar(255) NOT NULL default '',
này Collation trong mysql nó là gì zậy ?

Thế Giới Phẳng
02-06-2010, 13:53
name` varchar(255) NOT NULL default '',
này Collation trong mysql nó là gì zậy ?

Cái này mình để trống mà. Ko phải do cái đó. Lỗi gì ta?

honnhienh
02-06-2010, 14:04
Cái này mình để trống mà. Ko phải do cái đó. Lỗi gì ta?

Collation bác lên để nó là utf8_general_ci hoặc utf8... gì đó cho chắc ăn nó hiện tiếng việt. trước đây cũng bị lỗi hog hiện tiếng việt với datatable sau chỉnh nó lại thì ok ? bác kiểm tra coi. cái Collation cảu field 'name' là gì

Thế Giới Phẳng
02-06-2010, 14:11
Collation bác lên để nó là utf8_general_ci hoặc utf8... gì đó cho chắc ăn nó hiện tiếng việt. trước đây cũng bị lỗi hog hiện tiếng việt với datatable sau chỉnh nó lại thì ok ? bác kiểm tra coi. cái Collation cảu field 'name' là gì

Vẫn lỗi bạn à:


CREATE TABLE `user` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

honnhienh
02-06-2010, 14:19
bạn có thể cho mình coi quá cái code showdata lên được hog?

Thế Giới Phẳng
02-06-2010, 14:57
bạn có thể cho mình coi quá cái code showdata lên được hog?

Đây bạn. Cám ơn bạn giúp mình nha!


<?php
require_once('includes/config.php');
$sql="SELECT * FROM user ORDER BY id DESC";
$result=mysql_query($sql);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Danh sách thành viên</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<table width="480" border="1" align="center">
<tr>
<td width="91">User ID</td>
<td width="123">User Name</td>
</tr>
<? while ($rows = mysql_fetch_array($result)){?>
<tr>
<td><? echo $rows["id"];?></td>
<td><? echo $rows["name"];?></td>
<? } ?>
</table>

</body>
</html>

honnhienh
02-06-2010, 15:10
ah quên. bác add dữ liệu bằng gì zậy? bằng form hay bằng phpmyadmin. nếu bằng phpmyaddmin thì mình cũng hog giúp gì được. để có thể show len hiện thị tiếng việt thì bác hay làm cái form để nhập dữ liệu vào. khi đo lấy lên sẽ là tiếng việt. tui hog hiểu tại soa khi nhập tiếng việt trên myphpadmin thì lúc lấy nó lên không hiện tiếng viêt.

Thế Giới Phẳng
02-06-2010, 19:27
Insert từ form bạn à

Thế bó tay hả bạn!

ngoc_viet08
02-06-2010, 20:45
mysql_query("SET NAMES 'utf8'");
thêm dòng này trước khi thực hiện 1 query nào đó ( insert , update...) . hoặc đơn giản thì thêm nó vào cuối đoạn code kết nối csdl. hầu như ko còn vấn đề bận tâm về tiếng việt nữa :)

honnhienh
02-06-2010, 22:02
mysql_query("SET NAMES 'utf8'");
thêm dòng này trước khi thực hiện 1 query nào đó ( insert , update...) . hoặc đơn giản thì thêm nó vào cuối đoạn code kết nối csdl. hầu như ko còn vấn đề bận tâm về tiếng việt nữa :)

cái đó hình như bạn này thêm rùi, không kết quả.

bo tay thì sao được. hàng ngày vẫn làm bình thường. không biết bạn bị gì. có thể remote sang máy coi thử được hog. pm pox mình nic yahoo nếu được.

bachnga
02-06-2010, 22:30
Bạn copy đoạn mã sau paste vào notepad, lưu với encoding là utf-8 với phần mở rộng là php (ví dụ: test.php) rồi chạy thử. Hy vọng giúp được bạn:


<?php
//Thay đổi giá trị 4 biến sau cho hợp lệ
$db_host = "localhost";
$db_name = "database_name";
$db_user = "root";
$db_password = "???????";

$db = @mysql_connect($db_host, $db_user, $db_password);
if(!$db) die("LÍ DO DIE!!!");
@mysql_query("SET NAMES 'utf8'");
if(!@mysql_select_db($db_name,$db)) die("LÍ DO DIE");
$sql="SELECT * FROM user ORDER BY id DESC";
$result=mysql_query($sql, $db);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Danh sách thành viên</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<table width="480" border="1" align="center">
<tr>
<td width="91">User ID</td>
<td width="123">User Name</td>
</tr>
<? while ($rows = mysql_fetch_array($result)){?>
<tr>
<td><? echo $rows["id"];?></td>
<td><? echo $rows["name"];?></td>
<? } ?>
</table>

</body>
</html>
<?php
@mysql_free_result($result);
@mysql_close($db);
?>




ah quên. bác add dữ liệu bằng gì zậy? bằng form hay bằng phpmyadmin. nếu bằng phpmyaddmin thì mình cũng hog giúp gì được. để có thể show len hiện thị tiếng việt thì bác hay làm cái form để nhập dữ liệu vào. khi đo lấy lên sẽ là tiếng việt. tui hog hiểu tại soa khi nhập tiếng việt trên myphpadmin thì lúc lấy nó lên không hiện tiếng viêt.

phpMyAdmin cũng chỉ là 1 ứng dụng web, nếu dùng phpMyAdmin hiển thị được tiếng Việt thì ứng dụng của mình cũng phải hiển thị được tiếng Việt (bạn sử dụng php 5.x -> 6.x và MySQL 5.x-> 6.x chứ...)

Thế Giới Phẳng
02-06-2010, 23:02
Cám ơn honnhienh và bachnga nhiều nhá. Vấn đề tưởng chừng như phức tạp hóa ra dễ đến thế. Mình thử copy toàn bộ code của file index.php rồi mở notepad++ mới lưu lại với tên index.php Ko cần lưu với encoding là utf-8 thế là hiển thị được luôn. Mặc dù trong data vẫn hiện thị chữ kiểu "Đang cập nhật" đó.

thuyduongcd
02-06-2010, 23:12
Cám ơn honnhienh và bachnga nhiều nhá. Vấn đề tưởng chừng như phức tạp hóa ra dễ đến thế. Mình thử copy toàn bộ code của file index.php rồi mở notepad++ mới lưu lại với tên index.php Ko cần lưu với encoding là utf-8 thế là hiển thị được luôn. Mặc dù trong data vẫn hiện thị chữ kiểu "Đang cập nhật" đó.

Đây mới là sai lầm không thể cứu vãn

honnhienh
02-06-2010, 23:29
what? what tool do you use for your coding ?

ngoc_viet08
02-06-2010, 23:34
nghi là xài dreamweaver , mặc định là iso gì đó , nên ko hiển thị dc tiếng việt ?

Thế Giới Phẳng
03-06-2010, 00:32
Tớ dùng notepad++ mà. Có bao giờ dùng Dreamweaver đâu. Copy và paste. Hết lỗi! Giờ thì trên web cũng tiếng việt mà database cũng tiếng việt. Vui thật! Cám ơn 2 bạn lần nữa nhé.

thuyduongcd
03-06-2010, 09:37
Vào View - Encode xem nó là gì? Đảm bảo Western chắc

Thế Giới Phẳng
03-06-2010, 11:17
Encoding in UTF-8

Phải UTF8 nó mới hiện tiếng việt được chứ?