2010-01-28 67 views
4

我得到了很奇怪的问题。我有一个运行在两台服务器上的php网站。一个是Apache(Linux),另一个是IIS(WIndow)。 Linux服务器,我只是运行它的演示。 IIS是我需要托管的实际托管。即使所有相同的代码,数据库,在Linux服务器中,也没有字符。但在IIS中,每个地方都有Â字符。我检查了所有元标记,它是utf-8。在数据库整理也是utf-8。在mysql数据库中,我得到了那些字符,但不知何故,在Linux中,当我们从数据库中获取内容时,那些不显示。它只发生在IIS上。任何人都可以指出我该如何解决这个问题?谢谢。如何删除Â字符

回答

2

我有一个类似的问题在不久前,这里有一些有用的意见和信息 - 这是PHP的,但我认为理论是相同的:Question 386378

+0

看起来像,我的问题很难理解。 Yeap,我遇到的问题是 当我在IIS服务器上浏览时,那些字符内容显示在任何地方。 但在Apache(Linux)服务器中,它不显示任何。 我编写的所有代码和从数据库获取的内容完全相同。 – spotlightsnap 2010-01-28 08:54:19

+0

所以问题可能是,虽然Apache正确地将内容作为UTF-8提供,但IIS将其作为别的东西 - 可能是windows-1252。这是在这个答案链接到的线程中全面覆盖。 – 2010-01-28 17:06:50

2

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

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

与Apache:

AddDefaultCharset UTF-8 

Apache的设置可以放置在一个htaccess的文件。

+0

AddDefaultCharset UTF-8不错的一个! – 2013-06-21 23:43:33

0

尝试使用诸如FiddlerFirebug之类的内容直接检查html响应。请检查是否从IIS/Apache的响应(这应该返回完全相同的文字)有:

  • 不同的数据
  • 不同的页眉

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

1

我检查了所有元标记,它是utf-8。

浏览器不解释元标记。只有当没有http头文件存在时才会回退。右键单击并选择“查看页面信息”看什么编码器实际上解释页面。

在数据库归类为UTF-8也。在mysql数据库中

整理与显示字符无关。然而,字符集很重要。连接字符集也是如此。