Unicode和字元集的基礎知識

來源:互聯網
上載者:User

一個字串不指定它使用什麼編碼是沒有意義的。

再也不要假定,“純”文本(plain text)是ASCII.

沒有“純文字”這個東西。

如果你有一個字串,在記憶體中,在檔案中,或者在 Email 訊息裡,你必須知道它的編碼是什麼。否則你無法正確的解釋或者顯示給使用者。

所有的諸如 “我的網頁不能正常顯示了”,或者 ”Email 訊息不能正常顯示了“ 之類的愚蠢問題, 都是因為, 沒有告訴你到底是使用的那種編碼,

UTF-8 還是 ASCII 還是 ISO 8859-1 或者 Windows 1252 ?? 那麼自然無法正常的解釋和顯示,甚至不知道字串該在哪裡結束。

那麼如何保留這樣的編碼標誌,來表示字串的編碼? 有一些基本的辦法。

比如對於 Email 來說,在表單的 header 中加上:

Content-Type:text/plain;charset="UTF-8"

對於 Web 頁面來說,原來的做法是, Web 服務器隨著 web 頁面本身一起,發送一個類似於 Content-Type 的 http header.

(不是在 HTML 裡面,而是作為一個 response header 在 HTML 頁之前發送)

這樣做有一個問題。如果你的 Web 服務器同時有多個網站,網站由多個不同的人用不同的語言開發的程式混在一起。那麼 Web 服務器將無從得知,

每一個檔案是用什麼編碼方式寫的。這樣也就無法發送正確的 Content-Type header.

如果你能夠在每一個 HTML 檔案中記錄 Content-Type 資訊,那麼就很方便了。可這念頭似乎也很瘋狂,因為你還沒有知道用什麼編碼方式去

讀取這個檔案,又怎麼能讀出編碼資訊呢?

幸好,幾乎每一種編碼中,對 32~127 的字元都解釋的相同。所以你可以在每一個 html 檔案中這麼寫:

< html >

< head >

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

但是要注意, 這個 meta 標籤必須放在 head 中靠前面的位置才能保證不會出問題。 因為 Web 服務器讀到這裡的時候,就會停止解析,

然後用讀到的這個編碼方式重新解析頁面。

那麼,作為 網頁瀏覽器來說,如果沒有在 meta 標籤中或者 http headers 中發現 Content-Type, 會怎麼樣呢?

IE 是這麼做的:

先嘗試去猜,根據特定的位元組出現在各種語言的典型的編碼中的頻率。

如果編碼設定不正常,使用者可以通過 View|Encoding 菜單來嘗試不同的編碼方式。(當然,不是每個人都知道該這樣做)

在 VB, COM, Windows NT/2000/XP 中,預設的字串類型是 UCS-2(2位元組)的。

在 C++ 代碼中, 我們可以定義字串為 wchar_t(wide char),同時用 wcs 系列的函數代替 str 系列的函數。

如 wcscat, wcslen, 而不是 strcat, strlen.

在 C 代碼中,要建立 UCS-2 字串的話,只要在前面加一個 "L", 如 L"Hello"

對於 Web 頁面,最好統一為使用 UTF-8 編碼。 這個編碼已經被各種 網頁瀏覽器支援了很多年了。

        原文地址: http://java.ccidnet.com/art/3737/20060605/571503_1.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.