2012-04-23 79 views
0

我試圖創建一箇中文網頁,我意識到,雖然文本看起來很好,但是當我在瀏覽器上運行它時,一旦我更改了字符編碼,文本就會變成亂碼。以下是發生了什麼:關於中文編碼的問題

  1. 我在Emacs中創建我的html文件,以UTF-8編碼。
  2. 我將它上傳到服務器,並在我的瀏覽器(FF,IE,Chrome,Opera)上查看 - 沒問題。
  3. 我嘗試通過FF> View> Character Encoding>其他編碼查看頁面。所有這些不同的中文編碼系統,例如簡體中文(HZ)
  4. 除了UTF-8之外,在其他所有編碼中,文本都變成亂碼。

我假設這不是一個問題 - 即瀏覽器足夠聰明,知道該頁面在哪個編碼,並準確解析內容。我想知道的是,爲什麼我改變編碼後不能再閱讀中文文本 - 是因爲我沒有在我的操作系統上安裝中文字體?如果我的聽衆是中國人,我應該堅持使用UTF-8嗎?還是應該在衆多編碼系統中選擇一種?

在此先感謝您的幫助/意見。

回答

2

UTF不是「全能」編碼。它旨在包含易於使用的國際語言字符符號,但它仍然是編碼,就像您選擇的其他編碼一樣。您必須重新輸入每種編碼中的文本,才能在使用該編碼查看時正確顯示文本。

+0

重新鍵入文字?你是否說我應該創建單獨的文件,每個文件都用不同的編碼編寫和保存?那麼我如何決定要提供哪個文件? – anthonytwp 2012-04-24 10:40:35

+0

是的 - 但您應該遵循Agent_L的建議並在HTML中定義字符集編碼,這將節省更多時間。如果你需要單獨的文件,應該可以編寫一個腳本來自動將UTF-8編碼爲需要支持的每一種其他編碼,但是前瞻性地說,擁有相同內容的多個副本可能會成爲維護的麻煩。 – MHTri 2012-04-24 11:28:49

+0

我認爲他的意思是當客戶端請求一個文件並在其他編碼中明確要求它時。儘管可能,但現代瀏覽器不太可能不支持utf-8(對我而言,我/我們有偏見的知識)。 – 2012-04-24 15:57:44

2

查看器編碼必須與正在讀取的文件匹配。將UTF-8視爲其他類似的東西,可以將.txt重命名爲.exe並嘗試運行它。

您應該在HTML中指定正確的編碼。您在網絡瀏覽器中使用的選項僅適用於Web開發人員搞砸他的工作並聲明其他編碼比實際使用的編碼或在一個頁面上混合了2種不同編碼的極少數情況。

+1

是的,我也是這麼想的,因爲我從來沒有任何問題查看我的網頁 - 假定瀏覽器檢測到我的編碼。順便說一句,「你應該指定正確的HTML編碼」,你的意思是''對不對? – anthonytwp 2012-04-24 10:42:07

+0

對於HTML超過5的HTML,是或。如果有問題,請記住,服務器還聲明編碼在HTTP頭中發送時。你的服務器的管理員應該知道如何解決這個問題 - 如果它被破壞了。你可以檢查這些在例如。螢火蟲。 – 2012-04-24 15:46:45

0

當然,在瀏覽器中更改編碼將會「破壞」文本!瀏覽器正在使用UTF-8碼點流,並嘗試強制對原始數據進行另一種編碼。不用說,結果並不美觀。在瀏覽器中更改編碼不等於轉換。

正如您猜測的那樣,現代瀏覽器通常會正確猜測 - 但並非總是如此。作爲Agent_L確保在頭文件中聲明編碼。