2010-07-31 42 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!!! ;) 

有一个愉快的一天!

相关问题