標籤: 暫無標籤

不同的國家和地區制定了不同的標準,由此產生了 GB2312, BIG5, JIS 等各自的編碼標準。這些使用 2 個位元組來代表一個字元的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文系統下,ANSI 編碼代表 GB2312 編碼,在日文操作系統下,ANSI 編碼代表 JIS 編碼。 不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬於兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。 當然對於ANSI編碼而言,0x00~0x7F之間的字元,依舊是1個位元組代表1個字元。這一點是ASNI編碼與Unicode編碼之間最大也最明顯的區別。

1 ansi編碼 -簡介

  ANSI碼(American National Standards Institute),中文:美國國家標準學會的標準碼。

  為使計算機支持更多語言,通常使用 0x80~0xFF 範圍的 2 個位元組來表示 1 個字元。比如:漢字 '中' 在中文操作系統中,使用 [0xD6,0xD0] 這兩個位元組存儲。 對於ANSI編碼而言,0x00~0x7F之間的字元,依舊是1個位元組代表1個字元。這一點是ANSI編碼與Unicode(UTF-16)編碼之間最大也最明顯的區別。比如「A君是第131號」,在ANSI編碼中,佔用12個位元組,而在Unicode(UTF-16)編碼中,佔用16個位元組。因為A和1、3、1這4個字元,在ANSI編碼中只各佔1個位元組,而在Unicode(UTF-16)編碼中,是需要各佔2個位元組的。

2 ansi編碼 -關於ansi編碼的BUG

  很多細心的人會發現,當新建文本文檔只輸入「聯通」2字保存再打開時將是亂碼。

  當txt文檔中一切字元都在 C0≤AA≤DF 80≤BB≤BF 這個範圍時,notepad都無法確認文檔地格式,沒有自動依照UTF-8格式來"Display"。 而"聯通"就是C1 AA CD A8,剛好在上面地範圍內,所以不能正常顯現。

  記事本默認是以ANSI編碼保存文本文檔的,而正是這種編碼存在的bug招致了上述怪現象。假如保存時選擇Unicode、Unicode(big endian)、UTF-8編碼就正常了。此外,假如以ANSI編碼保存含有某些特別符號的文本文檔,再次打開后符號也會變成英文問號。

上一篇[新勃蘭登堡]    下一篇 [ansistring]

相關評論

同義詞:暫無同義詞