電腦中一個字符大都用八位數(shù)的二進制數(shù)字表示,標(biāo)準的ANSI編碼規(guī)范規(guī)定0~127總共128個數(shù)字代表信息(字母,數(shù)字,標(biāo)點,控制碼,空格等),剩下沒用到的128個編碼沒用做規(guī)定,不同國家地區(qū)制定了不同的標(biāo)準,由此產(chǎn)生了GB2312,BIG5以及JIS等各自的編碼標(biāo)準。這些使用 2 個字節(jié)(0x80~0xFF范圍內(nèi))來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文系統(tǒng)下,ANSI 編碼代表 GB2312 編碼,在日文操作系統(tǒng)下,ANSI 編碼代表 JIS 編碼。不同 ANSI 編碼之間互不兼容,當(dāng)信息在國際間交流時,無法將屬于兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。 ISO-8859-1(2,3...)是歐美以及拉丁地區(qū)的編碼方式,通過使用剩下的128位來擴充自己國家語言的編碼 事實證明,對可以用ASCII表示的字符使用UNICODE并不高效,因為UNICODE比ASCII占用大一倍的空間 我們通過UrlEncode函數(shù)即可得到漢字的編碼,比如對ANSI編碼的asp代碼,和UTF-8編碼的asp代碼執(zhí)行urlecode得到的結(jié)果就不一樣。
下面再看看ansi,unicode,unicode big endian,utf8編碼的文件用十六進制打開的樣子:同樣的文本“a花心”
可以看出第一種編碼方式全部都是文本信息,后面三種都有頭部表示自己的信息,所以ANSI中也沒有用FE FF來編碼的漢字(為了不沖突)UNICODE中對字母的編碼也是采用了2個字符,增加了冗余。我們比較ANSI和UTF-8編碼的格式,可以看到正好就是我們urlencode后的結(jié)果 |
|