sil*_*npi 9 html php browser character-encoding special-characters
我有一个php文件,其中包含以下文本:
<div class="small_italic">This is what you´ll use</div>
Run Code Online (Sandbox Code Playgroud)
在一台服务器上,它显示为:
This is what you´ll use
Run Code Online (Sandbox Code Playgroud)
另一方面,如:
This is what you?ll use
Run Code Online (Sandbox Code Playgroud)
为什么会有差异,我该怎么做才能使它显得正确(作为撇号)?
所有人的注意事项(供将来参考)
我实现了Gordon/Gumbo的建议,除了我在服务器级别而不是应用程序级别实现它.请注意,(a)我不得不重新启动apache服务器,更重要的是,(b)我必须用正确编码中的校正数据替换现有的"坏数据".
/etc/php.ini中
default_charset ="iso-8859-1"
Gor*_*don 16
你必须确保,内容是用适当的字符集提供的:
任一发送与所述内容首部包含
<?php header("Content-Type: text/html; charset=[your charset]"); ?>
Run Code Online (Sandbox Code Playgroud)
或者- 如果不存在HTTP字符集头 -插入charset
元素进入<META>
<meta http-equiv="Content-Type" content="text/html; charset=[your charset]" />
Run Code Online (Sandbox Code Playgroud)
与属性名称一样,http-equiv等同于http响应标头,如果未设置相应的http标头,则用户代理应使用它们.
EDIT1:就像Hannes在问题的评论中已经建议的那样,您可以查看您的网络服务器返回的标题,以查看它所服务的编码.两台服务器之间可能存在差异.因此,将<head>
上面的部分更改为"工作"服务器的部分.
EDIT2有关原因的详细说明,请参阅Gumbo的回答.
REPLACEMENT CHARACTER ?
(U + FFFD)的显示很可能意味着您将输出指定为Unicode但数据不是.
在这种情况下,如果ACUTE ACCENT ´
例如使用ISO 8859-1进行编码,则使用字节序列0xB4进行编码,因为它是ISO 8859-1中该字符的代码点.但是这种字节序列在UTF-8等Unicode编码中是非法的.在那种情况下,显示替换字符U + FFFD.
因此,要解决此问题,请确保根据实际情况正确指定字符编码(反之亦然).
归档时间: |
|
查看次数: |
1341 次 |
最近记录: |