<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Read Sean

    Read me, read Sean.
    posts - 508, comments - 655, trackbacks - 9, articles - 4

    本來是手寫的一張草稿,清理臺面的時候,正要扔,發現內容還有點意思,干脆吧,開個隨筆記錄一下,備忘,說不定還能幫到別人。

    在我們日常生活和工作中,尤其瀏覽含有中文的網站,時常會為亂碼問題犯愁,一些天生Unicode支持不到位的編程語言和軟件更是加重了這個現象。雖說已經是2009年了,我們時不時還是能碰到一些明顯腦殘的code,吐出一堆亂碼,不論你用選什么字符集,似乎都無法還原最初的中文。比如"?·2",或者同一個頁面,無法用同一個字符集顯示,任何一種字符都至少有一部分顯示不正確,不是這兒就是那兒。

    首先科普一下UTF-8。UTF-8是Unicode所有字符編碼實現中,應用范圍最廣的一個,最大的特點是兼容ASCII碼,在此基礎上,通過1..4個byte來表示每一個Unicode字符。它是怎么做到的?其實很簡單,看首個byte:
    00000000 ~ 01111111 : 0~127 (ASCII, 單個byte) 表示Unicode范圍\u0000 ~ \u007F
    11000000 ~ 11011111 : (2個1打頭,所以2個byte) 表示Unicode范圍\u0080 ~ \u07FF
    11100000 ~ 11101111 : (3個1打頭,所以3個byte) 表示Unicode范圍\u0800 ~ \uFFFF
    11110000 ~ 11110111 : (4個1打頭,所以4個byte) 表示Unicode范圍\u10000 ~ \u10FFFF

    除了單個byte這個case,其他情況下,后續的byte均以10打頭。這些打頭的bit:10、110、1110、11110,都不作為具體編碼的一部分參與真正Unicode編碼的計算。所以1..4個byte,其有效位數分別為:7、11、16、21,因此才有了\u007F、\u07FF、\uFFFF這樣的臨界值,且4個byte的空間還有富余。

    有了這個基礎知識,我們就來具體看看這個"已"字,是怎么被UTF-8表示的,以及為什么處理不當的代碼會最終輸出"?·2"。

    "已"字,用Unicode表示法,是\u5DF2,按照2個byte拆開成二進制表示:
    01011101 11110010
    如果用UTF-8編碼,采用1110???? 10?????? 10??????這個格式,?號部分填入上述01011101 11110010,得到
    11100101 10110111 10110010 這樣3個byte。

    好了,這個時候腦殘代碼出現,假如它不認識UTF-8,那么他會看到這樣3個前后沒有關聯的byte,在西歐Latin-1字符集(即ISO 8859-1)中,它們分別表示"?"、"·"、"2"這3個字符。如果把它們分別再按照UTF-8編碼,就成了:
    11000011 10100101 11000010 10110111 11000010 10110010
    完美的UTF-8編碼,只不過,這完全是假象,只能通過非常規手段才能恢復它原本的樣子。


    主站蜘蛛池模板: 亚洲AV无码一区二区三区鸳鸯影院| 亚洲av午夜成人片精品电影 | 97se亚洲国产综合自在线| 日本激情猛烈在线看免费观看 | 男女拍拍拍免费视频网站| 黄页网站免费在线观看| 国产亚洲av片在线观看16女人 | 亚洲人成电影亚洲人成9999网| 美女黄频视频大全免费的| 日韩免费视频一区| 亚洲综合色婷婷在线观看| 我要看WWW免费看插插视频| 亚洲人成电影在线观看网| 67pao强力打造高清免费| 中文字幕在线观看亚洲| 久久狠狠躁免费观看| 亚洲酒色1314狠狠做| 久久午夜羞羞影院免费观看| 麻豆亚洲AV永久无码精品久久| 97人妻精品全国免费视频 | 亚洲中文无码永久免费| 永久免费bbbbbb视频| WWW国产成人免费观看视频| 亚洲成av人片在线观看无码不卡| 日韩精品人妻系列无码专区免费 | 97性无码区免费| 日韩在线视精品在亚洲| 亚洲中文字幕无码爆乳AV| 13一14周岁毛片免费| 亚洲AV永久无码精品网站在线观看 | A毛片毛片看免费| 亚洲成人福利在线| 一本色道久久88亚洲综合| 亚洲免费精彩视频在线观看| 亚洲综合在线一区二区三区 | 久久久亚洲裙底偷窥综合| 天天天欲色欲色WWW免费| 中文字幕免费在线播放| 亚洲人成网站18禁止久久影院| 亚洲精品黄色视频在线观看免费资源| 久久大香伊焦在人线免费|