我有一个php文件,其中包含以下文字:
<div class="small_italic">This is what you´ll use</div>
在一台服务器上,它显示为:
This is what you´ll use
另一方面,如:
This is what you�ll use
为什么会有差异,我该怎么做才能使它显得正确(作为撇号)?
请注意(以备将来参考)
我实施了Gordon / Gumbo的建议,除了我在服务器级别而不是应用程序级别实现它。请注意:(a)我不得不重新启动apache服务器,更重要的是,(b)我必须用正确编码中的校正数据替换现有的“坏数据”。
/etc/php.ini中
default_charset =“iso-8859-1”
答案 0 :(得分:16)
您必须确保内容以适当的字符集提供:
使用包含
的header发送内容<?php header("Content-Type: text/html; charset=[your charset]"); ?>
或 - 如果HTTP字符集标题不存在 - 将<META>
element插入<head>
<meta http-equiv="Content-Type" content="text/html; charset=[your charset]" />
与属性名称一样,http-equiv相当于http响应标头,如果未设置相应的http标头,则用户代理应使用它们。
EDIT1:与问题评论中已经建议的Hannes一样,您可以查看网络服务器返回的标头,以查看它所服务的编码。两台服务器之间可能存在差异。因此,将上面的[your charset]
部分更改为“工作”服务器的部分。
EDIT2 有关原因的详细解释,see Gumbo's answer。
答案 1 :(得分:8)
显示 REPLACEMENT CHARACTER �
(U + FFFD)很可能意味着您specifying your output是Unicode,但您的数据不是。
在这种情况下,如果 ACUTE ACCENT ´
例如使用ISO 8859-1进行编码,则使用字节序列0xB4进行编码,因为它是该字符的代码点。 ISO 8859-1。但是这种字节序列在UTF-8等Unicode编码中是非法的。在这种情况下,显示替换字符U + FFFD。
所以要解决此问题,请确保根据您的实际情况specifying the character encoding properly(反之亦然)。
答案 2 :(得分:1)
简单的解决方案是使用ASCII
代码作为特殊字符。
ASCII中apostrophe
个字符的值为’
。尝试将此值放在您的html中,它应该适合您。
希望这有帮助!
答案 3 :(得分:1)
总结一点:
对于编码,UTF-8可能对你有好处。
如果此答案有帮助,请标记为正确或投票。 THX
答案 4 :(得分:0)
将浏览器字符集设置为定义的值:
E.g。
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
答案 5 :(得分:0)
1)在根目录中创建.htaccess
文件:
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
2)<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
答案 6 :(得分:0)
这可能是由于您插入到页面中的数据引起的,其中PHP与页面本身的字符编码不同(最常见的迭代是一个是Latin 1而另一个是UTF 8)。检查用于页面和数据库的编码。有可能会出现不匹配的情况。