2010-07-31 92 views
5

當我將一些用unicode編寫的文本插入數據庫時​​,它們會變成問號。數據庫編碼設置爲utf-8。還有什麼可能不正確?當我檢查phpmyadmin時,只有插入的問號!插入數據庫後,Unicode字符會成爲問號

這是我用來連接到數據庫的代碼:

​​
+0

您使用哪個模塊與MySQL進行通信? mysql,mysqli,pdo-mysql,...?數據也是正確的utf-8編碼?您究竟將哪些字符視爲問號? – VolkerK 2010-07-31 11:52:28

+1

我加了mysql_query(「SET NAMES'utf8'」);在mysql_select_db之後,問題解決了! – 2010-07-31 13:17:21

+0

您可能希望查看http://uk3.php.net/manual/en/function.mysql-set-charset.php – 2010-07-31 14:52:40

回答

3

是您所插入的UTF-8編碼過的文本?或者你的PHP文件不是UTF-8?你有沒有將MySQL客戶端連接設置爲UTF-8?

如果沒有,那麼這可能是問題的原因。

2

你怎麼知道成爲問號?你看到它們是PHP頁面中的問號,輸出數據庫字段時還是像phpmyadmin這樣的軟件?

無論哪種方式,問題可能是您的網頁編碼,而不是數據庫的編碼。確保添加以下行:

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

我也在phpmyadmin和網站上看到了問號。 – 2010-07-31 11:57:02

+0

您使用的字體是重要的信息,可以幫助解決這種情況 – stillstanding 2010-07-31 12:02:13

+0

我使用格魯吉亞的Unicode。字體名稱是Sylfaen。 – 2010-07-31 12:04:26

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

很抱歉,但你都錯了.. 我的朋友國王朱利安你剛剛執行:

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

有一個愉快的一天!

相關問題