回覆列表
  • 1 # 使用者2013589007217

      我們常說漢字的"內碼"與"外碼"。  內碼是漢字在計算機內部儲存,處理和傳輸用的資訊編碼。它必須與ASCII碼相容但又不能衝突。  所以把國標碼兩個位元組的最高位置"1",以區別於西文,這就是內碼。漢字的輸入碼稱為"外碼"。輸入碼即指我們輸入漢字時使用的編碼。常見的外碼分為數字編碼(如區位碼),拼音編碼和字形編碼(如五筆)。  再說區位碼,"啊"的區位碼是1601,寫成16進位制是0x10,0x01。這和計算機廣泛使用的ASCII編碼衝突。為了相容00-7f的ASCII編碼,我們在區位碼的高、低位元組上分別加上A0。這樣"啊"的編碼就成為B0A1。我們將加過兩個A0的編碼也稱為GB2312編碼,雖然GB2312的原文根本沒提到這一點。  內碼是指作業系統內部的字元編碼。早期作業系統的內碼是與語言相關的.現在的Windows在內部統一使用Unicode,然後用內碼表適應各種語言,"內碼"的概念就比較模糊了。我們一般將預設內碼表指定的編碼說成是內碼。內碼這個詞彙,並沒有什麼官方的定義。內碼表也只是微軟的一種習慣叫法。作為程式設計師,我們只要知道它們是什麼東西,沒有必要過多地考證這些名詞。  所謂內碼表(codepage)就是針對一種語言文字的字元編碼。例如GBK的codepage是CP936,BIG5的codepage是CP950,GB2312的codepage是CP20936。  Windows中有預設內碼表的概念,即預設用什麼編碼來解釋字元。例如Windows的記事本打開了一個文字檔案,裡面的內容是位元組流:BA、BA、D7、D6。Windows應該去怎麼解釋它呢?是按照Unicode編碼解釋、還是按照GBK解釋、還是按照BIG5解釋,還是按照ISO8859-1去解釋?如果按GBK去解釋,就會得到"漢字"兩個字。按照其它編碼解釋,可能找不到對應的字元,也可能找到錯誤的字元。所謂"錯誤"是指與文字作者的本意不符,這時就產生了亂碼。  答案是Windows按照當前的預設內碼表去解釋文字檔案裡的位元組流。預設內碼表可以透過控制面板的區域選項設定。記事本的另存為中有一項ANSI,其實就是按照預設內碼表的編碼方法儲存。  Windows的內碼是Unicode,它在技術上可以同時支援多個內碼表。只要檔案能說明自己使用什麼編碼,使用者又安裝了對應的內碼表,Windows就能正確顯示,例如在HTML檔案中就可以指定charset。  有的HTML檔案作者,特別是英文作者,認為世界上所有人都使用英文,在檔案中不指定charset。如果他使用了0x80-0xff之間的字元,中文Windows又按照預設的GBK去解釋,就會出現亂碼。這時只要在這個html檔案中加上指定charset的語句,例如:  <metahttp-equiv="Content-Type"content="text/html;charset=ISO8859-1">  如果原作者使用的內碼表和ISO8859-1相容,就不會出現亂碼了。????????????????????????  進一步的參考資料  "ShortoverviewofISO-IEC10646andUnicode"(http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)

  • 中秋節和大豐收的關聯?
  • 歌詞中帶走,人山人海的,都有什麼歌?