2010-07-31 41 views
5

Khi tôi chèn một số văn bản được viết bằng unicode vào cơ sở dữ liệu, chúng sẽ trở thành dấu hỏi. Mã hóa cơ sở dữ liệu được đặt thành utf-8. Điều gì khác có thể không chính xác? Khi tôi kiểm tra trong phpmyadmin có dấu hỏi chỉ được chèn!Ký tự Unicode trở thành dấu chấm hỏi sau khi chèn vào cơ sở dữ liệu

Đây là mã tôi sử dụng để kết nối với cơ sở dữ liệu:

define ("DB_HOST", "localhost"); // set database host 
define ("DB_USER", "root"); // set database user 
define ("DB_PASS","password"); // set database password 
define ("DB_NAME","name"); // set database name 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection."); 
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database"); 

mysql_set_charset('utf8',$link); 
mysql_query("SET CHARACTER SET utf8"); 
+0

Bạn sử dụng mô-đun nào để giao tiếp với MySQL? mysql, mysqli, pdo-mysql, ...? Dữ liệu cũng được mã hóa utf-8 đúng cách? Chính xác nơi bạn nhìn thấy các ký tự như dấu hỏi? – VolkerK

+1

Tôi đã thêm mysql_query ("SET NAMES 'utf8'"); sau mysql_select_db và vấn đề được giải quyết! –

+0

Bạn có thể muốn xem http://uk3.php.net/manual/en/function.mysql-set-charset.php –

Trả lời

3

là văn bản mà bạn chèn mã hóa theo UTF-8 quá? Hoặc là các tệp PHP của bạn không phải là UTF-8? Bạn đã đặt kết nối Máy khách MySQL thành UTF-8 chưa?

Nếu không, thì đó có thể là nguyên nhân của sự cố.

2

Làm cách nào để bạn biết được dấu chấm hỏi? Bạn có thấy chúng dưới dạng dấu chấm hỏi trong các trang PHP của bạn, khi bạn xuất các trường cơ sở dữ liệu, hoặc trong phần mềm như phpmyadmin?

Dù bằng cách nào, vấn đề có thể là mã hóa trang web của bạn chứ không phải của cơ sở dữ liệu. Hãy chắc chắn để thêm dòng sau:

header('Content-Type: text/html; charset=utf-8'); 
+0

Tôi thấy dấu hỏi trong phpmyadmin và trên trang web. –

+0

phông chữ bạn đang sử dụng là thông tin quan trọng có thể giúp giải quyết trường hợp này – stillstanding

+0

Tôi sử dụng mã unicode của Gruzia. Tên phông chữ là Sylfaen. –

0
//first make sure your file produce utf-8 chars 
header('Content-Type: text/html; charset=utf-8'); 
//make sure with your spelling 
//write 
mysql_query("SET CHARSET utf8");  
//instead of 
mysql_query("SET CHARACTER SET utf8"); 

//for some reasons 
mysql_query("SET CHARSET SET utf8"); 
//works on some servers and for other servers not.i am not sure why? 

//try using mysql_set_charset("utf8"); only without mysql_query("SET CHARSET utf8"); 
//for me i had the same issue with my server 
//when i used mysql_set_charset("utf8"); only --> the problem solved 
//again make sure with your spelling and try again 
0

Xin lỗi nhưng bạn đều sai .. Bạn tôi Vua Julien bạn có chỉ là để thực hiện:

mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET CHARSET utf8"); 
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); //This statement does the job!!! ;) 

Have a nice day!

Các vấn đề liên quan