如何去除 Â 字符

5

我遇到了一个非常奇怪的问题。我有一个php网站在两个服务器上运行。一个是在Apache(Linux)上,另一个是在IIS(Windows)上。在Linux服务器上,我只是为演示而运行它。IIS是我需要托管的实际主机。即使使用相同的代码和数据库,在Linux服务器上,没有出现Â字符。但是在IIS上,到处都有Â字符。我检查了所有的元标记,它们都是utf-8格式。在数据库中排序也是utf-8。在mysql数据库中,我得到了那些Â字符,但不知何故,在Linux中,当我们从数据库中获取内容时,这些Â字符不会显示。这只发生在IIS上。有人能指出如何解决这个问题吗?谢谢。

4个回答

2

您还需要在HTTP头中指定UTF-8。使用PHP:

<?php
header('Content-Type: text/plain; charset=utf-8');
?>

使用Apache:

AddDefaultCharset UTF-8

Apache的设置可以放在.htaccess文件中。


AddDefaultCharset UTF-8 很好! - Amy Neville

2

我之前也遇到过类似的问题,这里有一些有用的评论和信息 - 这是 PHP 的,但我相信理论是相同的:问题 386378


似乎我的问题很难理解。是的,我遇到的问题是这些特殊字符在我浏览IIS服务器时出现在各个位置。但是在Apache(Linux)服务器上则不显示任何内容。我编写的所有代码和从数据库获取的内容完全相同。 - spotlightsnap
所以问题可能是,虽然Apache正确地将内容作为UTF-8提供,但IIS将其作为其他东西提供--可能是windows-1252。这在链接到此答案的线程中已经详细讨论过了。 - Alan Moore

1
我检查了所有的元标记,它们都是utf-8编码。
浏览器不会解释元标记。只有当没有http头时,它才是后备方案。右键单击并选择“查看页面信息”以查看浏览器实际解释页面的编码。
在数据库中,排序规则也是utf-8编码。在mysql数据库中。
排序规则与字符显示无关。然而,字符集很重要。连接字符集也很重要。

0

尝试直接使用类似FiddlerFirebug的工具检查HTML响应。检查来自IIS / Apache的响应(应该返回完全相同的文本)是否具有:

  • 不同的数据
  • 不同的头文件

特别注意Content-Type标头,它应该说明返回的文本使用的字符编码(utf-8、ISO/IEC 8859-1、Latin-1等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接