2012-06-12 128 views
0

我有一個頁面http://199.193.248.80/test/test.php,它包含«字符。字符編碼適用於一個頁面,但不適用於其他

但是,當我閱讀JS此頁面上http://199.193.248.80/test/test.html,字符變成

兩個網頁使用字符集的Windows 1252,所以我不知道爲什麼它工作在一個頁面上而不是其他。需要做些什麼來解決這個問題?

+0

如果你打開一個文本編輯器這兩個文件,就這兩個文件中定義相同的字符編碼? – jakee

+0

他們都說ANSI – dukevin

+0

在最新的chrome中可以正常工作。 – ColWhi

回答

1

這可能是因爲PHP設置一個不同的字符集比Apache做(服務於.html時)標題(服務於.php時)進行編碼。瀏覽器使用響應頭中提到的字符集;它實際上覆蓋了<meta>標籤。

默認情況下PHP選擇iso-8859-1我相信,但你可以通過使用覆蓋字符集PHP:

header('Content-Type: text/html; charset=windows-1252'); 

或改變php.ini的全球變化。

參見:

+0

有趣..你有什麼建議在PHP文件中設置? – dukevin

+1

'header('Content-Type:text/html; charset = UTF-8');'其中UTF-8是你想要的字符集 –

+0

@KevinDuke你的.php不是問題,它是Apache你應該看的如果我正確理解你的問題;或者說,兩個字符集應該是相同的 –

-1

我建議使用HTML實體形式:&laquo;

這樣也沒關係,你用你的文件是什麼字符集,因爲您的瀏覽器只是解析它。

在PHP中您可以使用$str = htmlentities($str);爲字符串

+0

這將無法正常工作,因爲除了我提供的將會中斷的其他字符之外,還會有其他字符。我不想將每個unicode字符轉換爲html實體,應該有一個明確的解釋爲什麼它不起作用 – dukevin

+0

我引用:「需要做些什麼來解決這個問題?」。我提供了一個解決方案。可能有數百萬個原因,爲什麼它不適合你。它可能是你的瀏覽器,你的操作系統或服務器。您應該首先使用html實體。 –

+0

這確實提供了一個解決方案,但不是最乾淨的。我有幾個文檔不只是一行字符串與許多打印語句。我正在尋找能夠影響整個文檔以優化速度的解決方案。 – dukevin

相關問題