日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

urlencode和文本編碼

 看見就非常 2012-09-04

電腦中一個字符大都用八位數(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é)果就不一樣。

  1. <%  
  2.      Response.Write(Server.URLpathencode("花心"))  
  3.      ' 得到 %BB%A8%D0%C4  
  4. %>  
上面是ANSI編碼的文本,下面是UTF-8編碼的代碼文件,編碼結(jié)果大不一樣
  1. <%  
  2.      Response.Write(Server.URLEncode("花心"))  
  3.      ' 得到 %E8%8A%B1%E5%BF%83  
  4. %>  
同樣針對ANSI編碼的php腳本和UTF-8編碼的腳本調(diào)用同樣的函數(shù)也是不同結(jié)果

  1. <?php  
  2. echo urlencode("花心");  
  3. // %BB%A8%D0%C4  
  4. ?>  
  1. <?php  
  2. echo urlencode("花心");  
  3. // E8%8A%B1%E5%BF%83  
  4. ?>  
針對某種編碼encode后的結(jié)果需要用同樣編碼的文本格式解碼才可讀,不然就是一堆亂碼。所以我們在程序中最好做到編碼統(tǒng)一,比如統(tǒng)一使用utf8這種全球通用包含各種語言文字的編碼。

下面再看看ansi,unicode,unicode big endian,utf8編碼的文件用十六進制打開的樣子:同樣的文本“a花心”

  1. ANSI                61  BB  A8  D0  C4   
  2. UNICODE             FF  FE  61  00  B1  82  C3  5F  
  3. UNICODE-BIG-ENDIAN  FE  FF  00  61  82  B1  5F  C3  
  4. UTF-8               EF  BB  BF  61  E8  8A  B1  E5  BF  83  

可以看出第一種編碼方式全部都是文本信息,后面三種都有頭部表示自己的信息,所以ANSI中也沒有用FE FF來編碼的漢字(為了不沖突)UNICODE中對字母的編碼也是采用了2個字符,增加了冗余。我們比較ANSI和UTF-8編碼的格式,可以看到正好就是我們urlencode后的結(jié)果

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多