今天用notepad.exe另存文本文件的時候,發(fā)現(xiàn)下面的編碼中,有個ANSI編碼,文章題目中的幾個編碼在解決B/S程序亂碼問題的時候,基本都了解了,但ANSI是什么東東?原來......
1. ASCII和Ansi編碼
字符內(nèi)碼(charcter code)指的是用來代表字符的內(nèi)碼.讀者在輸入和存儲文檔時都要使用內(nèi)碼,內(nèi)碼分為
單字節(jié)內(nèi)碼 -- Single-Byte character sets (SBCS),可以支持256個字符編碼.
雙字節(jié)內(nèi)碼 -- Double-Byte character sets)(DBCS),可以支持65000個字符編碼.
前者即為ASCII編碼,后者對應ANSI.
至于簡體中文編碼GB2312,實際上它是ANSI的一個代碼頁936
2. Unicode
如上,ANSI有很多代碼頁,使用不同代碼頁的內(nèi)碼無法在其他代碼也正常顯示,這就是為什么日文版/繁體中文版游戲無法在簡體中文平臺直接顯示的原因.
Unicode也是一種字符編碼方法,不過它是由國際組織設計,可以容納全世界所有語言文字的編碼方案.它是一種2字節(jié)編碼,能夠提供65536個字符,這個數(shù)字是不夠表示所有的字符的(漢語就有55000多字符),所以,通過一個代理對的機制來實現(xiàn)附加的917476個字符表示,以達到所有字符都具有唯一編碼.
3.Unicode和BigEndianUnicode
這兩者只是存儲順序不同,如"A"的unicode編碼為65 00
其BigEndianUnicode編碼為00 65
4. UTF-8
這是為傳輸而設計的編碼,其系列還有UTF-7和UTF-16
其中UTF-16和Unicode編碼大致一樣, UTF-8就是以8位為單元對Unicode進行編碼。從Unicode到UTF-8的編碼方式如下:
Unicode編碼(16進制) UTF-8 字節(jié)流(二進制)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
例如“漢”字的Unicode編碼是6C49。6C49在0800-FFFF之間,所以肯定要用3字節(jié)模板了:1110xxxx10xxxxxx 10xxxxxx。將6C49寫成二進制是:0110 110001 001001,用這個比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。