PHP字符编码 符号而不是à

时间:2011-09-23 13:49:04

标签: php utf-8 character-encoding joomla1.5

嗨,这是我在这个joomla网站的某些页面上发生的一个非常奇怪的错误:

http://www.pcsnet.it/news

如果您了解特定新闻的详细信息,则会正确显示à字符。

其他重音字符似乎没有受到影响。

我已经检查过MyFql数据库中的UTF-8编码是默认的,文本文件是UTF-8编码。

其他想法?

3 个答案:

答案 0 :(得分:6)

在你的情况下,非常有趣的是它只影响字母à!所以它不能成为编码问题。

这是我对你的问题的看法。字母à在utf8中以两个字节编码。第一个字节是xC3,在latin-1中是Ã,第二个字节是......非破坏空间! (其他重音字母,例如èÃ编码,后跟latin-1中的其他重音字母,并且不受影响。)

因此,我的猜测是你有一个脚本,在某处,删除或替换latin-1中的非中断空格,即字符xA0。生成的孤立字节xC3无法正确显示,因此会显示常规占位符。 (只需在latin-1中加载您的页面,您就会看到我是对的。)

找到删除不间断空格的脚本,你会没事的。

答案 1 :(得分:0)

您是否有可能在从数据库中检索到的文本中使用htmlentitieshtmlspecialcharshtml_entity_decode?如果是这样,你需要在第三个参数中强制使用UTF8,因为它不是这些函数的默认字符集。

示例:htmlentities('£hello', null, 'utf-8');

答案 2 :(得分:0)

标志通常表示浏览器尝试显示的字符在所使用的字体中不可用。它可能不是一个à,如果它适用于其他页面(使用相同的字体)。