MySql收集数据库只有英文而不是其他

时间:2011-07-10 04:37:29

标签: mysql unicode utf-8 collation encode

我有一个评论部分和提交表格,我的任何成员都可以提交 如果我的会员用英语发帖,我将收到一封电子邮件更新,评论将在英文中发布没有问题。但如果他们使用非英语这样的泰语语言示例。然后,例如สวัสดี所说的所有单词都会显示为??????

我不知道为什么,但我去检查我的php.ini文件和设置为UTF8的unicode / encoded以及设置为UTF8的MySQL排序规则。我确保在.html / .php文件中将元设置为UTF8,但仍然会导致同样的问题。

有什么建议我错过了配置的其他内容吗?

2 个答案:

答案 0 :(得分:1)

确保您使用的是multibyte safe string functions,否则您可能会失去UTF-8编码。

来自PHP mbstring手册:

  

虽然有很多种语言   每个必要的角色都可以   由一对一映射表示   一个8位的值,也有几个   语言需要这么多   书面沟通的字符   它们不能被包含在内   一个字节可以编码的范围(一个字节   由八位组成。每一位都可以   仅包含两个不同的值,一个   或零。因此,一个字节就可以了   仅代表256个唯一值(两个   八的力量))。多字节   字符编码方案是   发展到表达超过256   常规字节中的字符   编码系统。

     

当你操纵(修剪,分裂,   splice等)编码的字符串   多字节编码,你需要使用   两个或两个以上的特殊功能   连续字节可以表示a   这种编码中的单个字符   方案。否则,如果您申请   非多字节感知字符串函数   字符串,它可能没有   检测到的开始或结束   多字节字符,最终得到一个   腐败的垃圾串最多   可能会失去原来的意思。

     

mbstring提供多字节特定   字符串函数,可以帮助您处理   在PHP中使用多字节编码。在   除此之外,mbstring处理   字符编码之间的转换   可能的编码对。 MBSTRING   旨在处理基于Unicode的   编码,如UTF-8和UCS-2和   许多单字节编码   方便

答案 1 :(得分:0)

我刚刚发现造成问题的原因

php.ini

中的

mbstring.internal_encoding它被设置为其他东西所以我把它设置为UTF-8然后神奇!现在一切正常!