UTF-8字符的间歇性问题

时间:2010-09-30 17:10:15

标签: php mysql apache utf-8 lamp

我正在运行一个相当标准的LAMP堆栈。

问题是正确地间歇渲染UTF-8字符。大约50%的时间非ASCII UTF-8字符正确呈现(例如,使用适当的变音符号),但大约50%的时间我得到'?'引渡而不是。如果我重新加载页面,有时它会纠正问题,有时则不会。它适用于所有平台上的所有浏览器,这表明存在MYSQL或Apache问题,但我无法弄明白。

数据库本身是UTF-8格式,我在phpMyAdmin中浏览数据库时从未见过这个问题。

我在打开数据库时发出了一个SET NAMES utf-8命令(并尝试将其更改为SET CHARSET utf-8命令)但没有运气。

让我感到困惑的是它是断断续续的,发生在条纹上,例如:它将连续30页发生(即使它们只是重新加载),然后清理10页,然后再发生几页等等。

您可以点击此处的“列表”按钮尝试查看问题:http://latin-words.com/list_vocab.php虽然可能需要多次重新加载才能实现或让它消失

服务器配置: Ubuntu:9.10 Mysql:5.1.37 PHP 5.2.10 Apache 2.2.12

任何提示都会受到高度赞赏?

1 个答案:

答案 0 :(得分:1)

修改
对于搜索者来说,从评论来看,问题实际上是一个问题SET NAMES utf-8;(不正确)而不是SET NAMES utf8;(正确)这并不意味着我在下面发布的更为模糊的原因也不能原因;)


听起来像locales& iconv,尝试确定在一切正常的情况下在网络服务器进程中使用的locale,以及它不再有效的时刻(尝试$currentlocale = setlocale(LC_ALL,NULL);$currentlocale = setlocale(LC_CTYPE ,NULL);获取使用的区域设置)。