我正在运行一个相当标准的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
任何提示都会受到高度赞赏?
答案 0 :(得分:1)
修改强>
对于搜索者来说,从评论来看,问题实际上是一个问题SET NAMES utf-8;
(不正确)而不是SET NAMES utf8;
(正确)这并不意味着我在下面发布的更为模糊的原因也不能原因;)
听起来像locales& iconv
,尝试确定在一切正常的情况下在网络服务器进程中使用的locale,以及它不再有效的时刻(尝试$currentlocale = setlocale(LC_ALL,NULL);
或$currentlocale = setlocale(LC_CTYPE ,NULL);
获取使用的区域设置)。