浏览器显示�而不是´

9 浏览
0 Comments

浏览器显示�而不是´

我有一个PHP文件,其中包含以下文本:

This is what you´ll use

在一个服务器上,它显示为:

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
0 Comments

浏览器显示�而不是´的问题可能是因为你将输出指定为Unicode,但是你的数据不是Unicode编码。

在这种情况下,例如,如果ACUTE ACCENT´是使用ISO 8859-1编码的,那么它将使用字节序列0xB4进行编码,因为在ISO 8859-1中该字符的代码点就是0xB4。但是,在Unicode编码如UTF-8中,该字节序列是非法的。因此,会显示替换字符U+FFFD。

要解决这个问题,确保根据实际情况正确指定字符编码(或反之亦然)。

0
0 Comments

问题的原因是文件保存在Web服务器上时编码错误,Web服务器传递文件时也使用了错误的编码,HTML的元标签设置了错误的编码,以及在书写特殊字符时使用了错误的字符。解决方法是确保文件在Web服务器上保存时使用正确的编码,Web服务器传递文件时使用正确的编码,正确设置HTML的元标签编码,并在书写特殊字符时使用正确的字符。推荐使用UTF-8编码。如果这个回答有帮助,请标记为正确或投票支持。谢谢。

0
0 Comments

浏览器显示�而不是´的问题可能是由于内容的字符集不正确引起的。解决该问题的方法有两种:

1. 使用header函数发送正确的Content-Type头部信息:


2. 如果HTTP的charset头部信息不存在,则在head中插入一个META元素:


需要注意的是,http-equiv属性是HTTP响应头部的等效属性,当相应的HTTP头部未设置时,用户代理应该使用它们。

可以通过查看web服务器返回的头部信息来确定文档是否使用UTF-8编码。如果两个服务器之间存在差异,可以将上述代码中的[your charset]替换为"working"服务器中使用的字符集。

更详细的解释可以参考Gumbo在Stack Overflow上的回答。

另外需要注意的是,文档似乎不是以UTF-8编码的。建议按照正确的顺序设置字符编码,即先设置HTTP头部,然后再设置HTML头部(只有在HTTP中未指定编码时)。

如果HTTP中已经指定了字符编码,那么META标签就不会起作用。这也是为什么在某些情况下META标签是不够的原因。

请比较请求页面时Apache服务器返回的响应头部。可以使用Firebug(针对Firefox)或Fiddler(针对IE)来进行检查。

如果两个服务器返回的响应头部不同,其中一个使用UTF-8编码,并且出现了�字符,那么很可能是之前提到的情况。一个服务器发送了编码信息,而另一个没有。发送UTF-8编码的服务器会覆盖通过META设置的ISO-8859-1编码,因为META只是一个备选方案。尝试使用PHP如上所示的方法覆盖头部信息。

在php.ini中切换到iso-8859-1并重新启动apache可能会使一些字符正确显示,但其他字符可能仍然显示为QuiÃnes somos, Explóra。请按照上述建议发送头部信息,并检查错误字符是否实际上属于ISO-8859-1。如果不是,那么它们必须被编码为相应的HTML实体。

0