2011-10-17 45 views
2

我一直使用php + mysql(phpmyadmin)来构建中文内容(utf-8)很长一段时间的网站。Mysql显示中文字符

当输入表格,并且从db生成输出php时,汉字显示效果良好;但是当我查看数据库时,尽管有时它们是普通的中文字符,但它们却不是(成为奇怪的字符串),这让我注意到,mysql处理和输入数据的方式并不总是utf-8。

有网站上的一些专家提到,mysql被用来记录latin1输入的数据;然而,我注意到,phpmyadmin中现有的字符集是UTF-8 ...

有没有可靠的方法来检测出现在phpmyadmin表格单元格中的中文字符的编码格式?

此外,除了在页面的标题处提及,还会有任何方法,以便我可以确保输入到数据库的数据是utf-8而不是其他数据?

谢谢。

+2

检查phpMyAdmin的连接编码,phpMyAdmin的显示编码一起。他们是否设置为utf-8? – ikromm

+0

如果您在创建表时定义了字符集utf8,并且您还应用了mysql_set_charset('utf8',$ con);当连接到MySQL然后它应该工作。至于在某些客户端没有正确显示John的评论对我来说似乎合乎逻辑,可以完成这项工作。 – Melsi

+0

嗨,让我告诉你输入到db的“utf-8”内容,我从单元格复制了这些内容: – Ham

回答

5

人们在这方面遇到的最大问题是,他们不告诉MySQL他们在连接到数据库时发送/期待UTF-8编码数据,所以MySQL认为它应该处理latin1编码数据并且相应地转换它。连接到数据库后使用mysql_set_charset发出命令SET NAMES utf8

+0

mysql_select_db($ database_conn_impossible,$ conn_impossible); $ set_charset ='SET NAMES utf8'; mysql_query($ set_charset,$ conn_impossible); – Ham

+0

对不起,在连接文件中,我已经包含了上述内容,它会是您提到的第一种方式吗?另外,我应该在哪里应用mysql_set_charset?谢谢。 – Ham

+0

好的,那么这个解决方案不适用。刺入黑暗中...... :)'mysql_set_charset'本质上与'SET NAMES'完全相同。 – deceze

0
在我的情况

,难道仅仅是因为htmlentities();解决办法是改变echo htmlentities($email_db);echo htmlentities($email_db, ENT_COMPAT, 'UTF-8');