浏览器显示 而不是 ´
我有一个包含以下文本的 PHP 文件:
I have a PHP file which has the following text:
<div class="small_italic">This is what you´ll use</div>
在一台服务器上,它显示为:
On one server, it appears as:
This is what you´ll use
另外一个,如:
This is what you�ll use
为什么会有所不同,我该怎么做才能使其正确显示(作为撇号)?
Why would there be a difference and what can I do to make it appear properly (as an apostrophe)?
请注意(以供将来参考)
我实现了 Gordon/Gumbo 的建议,只是我是在服务器级别而不是应用程序级别实现的.请注意,(a) 我必须重新启动 Apache 服务器,更重要的是,(b) 我必须用正确编码的更正数据替换现有的坏数据".
I implemented Gordon's / Gumbo's suggestion, except I implemented it on a server level rather than the application level. Note that (a) I had to restart the Apache server and more importantly, (b) I had to replace the existing "bad data" with the corrected data in the right encoding.
/etc/php.ini
/etc/php.ini
default_charset = "iso-8859-1"
default_charset = "iso-8859-1"
推荐答案
您必须确保使用正确的字符集提供内容:
You have to make sure the content is served with the proper character set:
发送带有 header 的内容>
<?php header("Content-Type: text/html; charset=[your charset]"); ?>
或 - 如果 HTTP charset
标头不存在 - 插入 元素进入
:
or - if the HTTP charset
headers don't exist - insert a <META>
element into the <head>
:
<meta http-equiv="Content-Type" content="text/html; charset=[your charset]" />
正如属性名称所暗示的那样,http-equiv
相当于一个 HTTP 响应标头,如果未设置相应的 HTTP 标头,用户代理应该使用它们.
Like the attribute name suggests, http-equiv
is the equivalent of an HTTP response header and user agents should use them in case the corresponding HTTP headers are not set.
就像 Hannes 在问题的评论中已经建议的那样,您可以查看您的网络服务器返回的标头以查看它提供的编码.两台服务器之间可能存在差异.因此,将上面的 [your charset]
部分更改为工作"服务器的部分.
Like Hannes already suggested in the comments to the question, you can look at the headers returned by your webserver to see which encoding it serves. There is likely a discrepancy between the two servers. So change the [your charset]
part above to that of the "working" server.
有关原因的更详细解释,请参阅 Gumbo 的回答.
For a more elaborate explanation about the why, see Gumbo's answer.
相关文章