2009-06-24 198 views
2

我有一個PHP腳本從XML文件讀取數據,通過AJAX返回到一個頁面,然後將數據放入相關的文本區域。如何確保英鎊符號(£)顯示正確?

頁面的內容類型如下:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 

的XML標題是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE xsl:stylesheet [ 
    <!ENTITY pound "&#163;"> 
]> 
... 

的問題是,當數據在文本框中到達它它之前的角色。

我的印象是將內容類型設置爲UTF-8修復了這個問題,但我一定是錯的。任何人都可以告訴我需要使用哪種編碼類型來使其始終呈現?

回答

6

字符編碼的問題在於,如果某個程序或進程在任何一個步驟都無法正確處理,那麼字符可能會消失。

所以,你必須

  1. HTML頁面這是
  2. 使得AJAX調用它
  3. 在服務器上運行一些代碼,
  4. 建立一個XML響應弗羅曼XML文件,該文件是
  5. 返回到瀏覽器並顯示在文本框中

因此,理想情況下,在每一步,你想要UTF-8編碼。在這個過程中,你的角色可能正在逐漸消失。下面是我會採取跟蹤下來

  1. 確保您的HTML/PHP頁面具有正確的Meta標籤
  2. 確保您的HTML/PHP文本文件保存爲步驟UTF-8
  3. 確保這是一個從讀取XML文件已保存爲UTF-8
  4. 確保這是一個從閱讀與您共建都有自己的編碼在prolouge <?XML版本設置響應您的XML文件= " 1.0 " encoding = " utf-8 "? >
  5. 確保您的服務器的響應頭送出UTF-8
  6. 人工呼叫服務在瀏覽器中查看是否被正確返回
3

符號你需要確保你的AJAX請求也返回UTF-8。設置靜態頁面的Content-Type沒有問題,但它不會影響在進行Ajax調用時發生的HTTP傳輸的Content-Type編碼。

嘗試在返回Ajax結果的腳本中使用此代碼(在任何其他輸出之前)。這將設置您的HTTP響應的內容類型:

header('Content-Type: text/html; charset=utf-8'); 
+0

乾杯,不知道如果我有這個,但我認爲我的PHP。無論如何,ini被設置爲默認爲UTF-8頁面:) – xenon 2009-06-24 19:06:36