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