我在标头中有<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
,但它仍然显示�
而不是µ
。我尝试将AddCharset UTF-8 .php
添加到.htaccess
,但它没有帮助。
编辑:如果我只是将符号µ
放入文件中,则会正确显示。当我尝试从数据库输出时,我得到�
。
答案 0 :(得分:2)
如果某些内容显示为 UNICODE REPLACEMENT CHARACTER,则表示文档以Unicode编码(例如UTF-8)进行解释,但此时的字节序列在此编码中无效。
换句话说,您的数据/文件不是UTF-8编码的。确保它保存为UTF-8 ,而不仅仅是声明。
如果从数据库输出数据时遇到问题,则表示来自数据库的数据不是UTF-8编码的。请参阅Handling Unicode Front To Back In A Web App。
答案 1 :(得分:0)
您遇到此问题是因为您的输出实际上不是UTF-8,即使您告诉浏览器它是。你应该解决这个问题。
如果您通过更正输出来修正它,因此它是正确的UTF-8,那么您的问题将得到解决,因为UTF-8可以显示此符号(以及任何其他符号)。如果通过将charset更改为ANSI字符集来修复它,那么您将在代码页中输出可能不支持此符号的输出。
要正确输出,您可以将其输出为html实体µ
或µ
。如果你现在这样做,符号也会正确显示,但请记住你的实际输出不是UTF-8,所以如果你的页面上需要另一个符号,那么你会遇到同样的问题!
修改强>
我现在看到你的编辑。如果它适用于硬编码字符,则PHP是正确的,但获取的数据没有正确的编码。您可以通过为数据库,表和/或特定列提供任何unicode排序规则来解决此问题。另一种方法是在查询后使用函数iconv将数据库中的数据转换为UTF-8。