Php 浏览器显示;而不是´;
我有一个PHP文件,其中包含以下文本:Php 浏览器显示;而不是´;,php,html,browser,character-encoding,special-characters,Php,Html,Browser,Character Encoding,Special Characters,我有一个PHP文件,其中包含以下文本: <div class="small_italic">This is what you´ll use</div> 另一方面: This is what you�ll use 为什么会有差异?我该怎么做才能使它正确地显示(作为撇号) 大家注意(供将来参考) 我实现了Gordon/Gumbo的建议,只是在服务器级别而不是应用程序级别实现了它。请注意,(a)我必须重新启动Apache服务器,更重要的是,(b)我必须用正确编码的正确数据
<div class="small_italic">This is what you´ll use</div>
另一方面:
This is what you�ll use
为什么会有差异?我该怎么做才能使它正确地显示(作为撇号)
大家注意(供将来参考) 我实现了Gordon/Gumbo的建议,只是在服务器级别而不是应用程序级别实现了它。请注意,(a)我必须重新启动Apache服务器,更重要的是,(b)我必须用正确编码的正确数据替换现有的“坏数据” /etc/php.ini
default_charset=“iso-8859-1”您必须确保内容包含正确的字符集: 发送包含以下内容的内容:
<?php header("Content-Type: text/html; charset=[your charset]"); ?>
正如属性名所示,httpequiv
相当于http响应头,如果没有设置相应的http头,用户代理应该使用它们
正如Hannes在对问题的评论中已经建议的那样,您可以查看Web服务器返回的头,以查看它所使用的编码。这两台服务器之间可能存在差异。因此,将上面的[您的字符集]
部分更改为“工作”服务器的部分
有关原因的更详细解释,请将浏览器的字符集设置为定义的值: 比如说,
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
.htaccess
文件:
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
AddDefaultCharset utf-8
添加字符集utf-8*
CharsetSourceEnc utf-8
字符集默认utf-8
'
例如使用进行编码,则使用字节序列0xB4进行编码,因为这是ISO 8859-1中该字符的代码点。但在UTF-8这样的Unicode编码中,该字节序列是非法的。在这种情况下,显示替换字符U+FFFD
因此,要解决这个问题,请确保您是根据实际情况进行的(反之亦然)。这可能是由于您将数据插入到页面中,而PHP的字符编码与页面本身不同(最常见的迭代是拉丁语1和其他UTF-8)
检查页面和数据库使用的编码。很可能会出现不匹配。简单的解决方案是对特殊字符使用ASCII码
ASCII中撇号字符的值为
’代码>。尝试将此值放入HTML,它应该可以正常工作。总结一下:
确保保存在web服务器上的文件具有正确的编码
确保web服务器也使用正确的编码交付它
确保HTML元标记设置为正确的编码
确保使用“标准”特殊字符,即使用“代替”,而不是你想写的“卢克·天行者代码”
对于编码,UTF-8可能对您有好处
如果这个答案有帮助,请标记为正确或投赞成票。THX对我来说似乎是一个编码问题。无论如何,你为什么不像其他人一样使用'
而不是'
d检查返回文档(标题)的字符集可能有解释,在任何情况下,您都可以使用’代码>我要补充:这闻起来像单词copy/paste,它不是ASCII撇号x'27'。它可能是windows“left single quote”x'92,仅在MS代码页中受支持。除了此问题的具体建议之外,如果你还没有读过Joel Spolsky的书,我总是建议你读一下:)你怎么知道他的文档是UTF-8格式的?更重要的是:数据似乎不是用UTF-8编码的。@Gordon:我希望先看HTTP,然后看HTML(只有在HTTP中没有指定编码的情况下)中的建议。@Gumbo好的,改变了顺序,虽然我很确定拥有META一点也不害处。它被称为http equiv是有原因的。当没有等效的http头时,用户代理应该使用它。@Gordon:是的,如果在http中指定了字符编码,则元应该没有任何效果。这就是为什么META在某些情况下不够用的原因。ASCII只有一个撇号字符,即0x27。字符参考’
是指Unicode中的字符U+2019右单引号。@Gumbo:右单引号是撇号的正确字符:我猜他的意思是’
是一个纯ascii字符串,而不是它所表示的字符是ascii。@RoToRa:我只是想指出US-ascii只有一个撇号字符,字符引用是指Unicode中的字符。除此之外,U+2019并不是所有语言中正确的印刷撇号。但是是的,它是为英语准备的。
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>