2010-01-28 38 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數據庫中

整理與顯示字符無關。然而,字符集很重要。連接字符集也是如此。