• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            網(wǎng)絡(luò)服務(wù)器軟件開發(fā)/中間件開發(fā),關(guān)注ACE/ICE/boost

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              152 Posts :: 3 Stories :: 172 Comments :: 0 Trackbacks

            utf8的編碼算法
            作者:轉(zhuǎn)載    轉(zhuǎn)貼自:轉(zhuǎn)載    點(diǎn)擊數(shù):827    文章錄入: zhaizl




                     
            例如字符"漢"的unicode是6C49,把這個(gè)unicode字符表示為一個(gè)大整數(shù),然后轉(zhuǎn)變成多字節(jié)編碼110110001001001:
                     
            觀察這個(gè)整數(shù)的二進(jìn)制碼序列(110,110001,001001)
                      從后往前取
                     
            如果這個(gè)二進(jìn)制序列只有后7位(小于128,也就是ascii字符)則直接取后7位二進(jìn)制數(shù)形成一個(gè)utf8字符。
                     
            上面的字符“漢”二進(jìn)制序列大于7位,所以取后6位(1001001),加10形成一個(gè)utf8字節(jié)(10 001001 ,16進(jìn)制89)。
                     
            剩下的二進(jìn)制序列(110,110001)從后向前取6位,加10形成一個(gè)utf8字節(jié)(10 110001,16進(jìn)制B1)。
                     
            剩下的二進(jìn)制序列(110)從后向前取6位,由于不足6位,將這個(gè)數(shù)和1110000相或,得到字符11100110,16進(jìn)制E6
                     
            最后,就得到了utf8編碼,16進(jìn)制表示為E6B189


            解讀UTF8編碼
            2007-01-19 10:40

            在網(wǎng)絡(luò)中有很多地方都有采用UTF8編碼,由于要編寫與郵件服務(wù)端有關(guān)的程序,而郵件服務(wù)端有些地方用到了UTF8編碼,所以對(duì)它有了初步的認(rèn)識(shí)!

            它其實(shí)和Unicode是同類,就是在編碼方式上不同!
            首先UTF8編碼后的大小是不一定,不像Unicode編碼后的大小是一樣的! 
            我們先來看Unicode的編碼:一個(gè)英文字母 “a” 和 一個(gè)漢字 “好”,編碼后都是占用的空間大小是一樣的,都是兩個(gè)字節(jié)!

            而UTF8編碼:一個(gè)英文字母“a” 和 一個(gè)漢字 “好”,編碼后占用的空間大小就不樣了,前者是一個(gè)字節(jié),后者是三個(gè)字節(jié)!

            現(xiàn)在就讓我們來看看UTF8編碼的原理吧:
              因?yàn)橐粋€(gè)字母還有一些鍵盤上的符號(hào)加起來只用二進(jìn)制七位就可以表示出來,而一個(gè)字節(jié)就是八位,所以UTF8就用一個(gè)字節(jié)來表式字母和一些鍵盤上的符號(hào)。然而當(dāng)我們拿到被編碼后的一個(gè)字節(jié)后怎么知道它的組成?它有可能是英文字母的一個(gè)字節(jié),也有可能是漢字的三個(gè)字節(jié)中的一個(gè)字節(jié)!所以,UTF8是有標(biāo)志位的!

              當(dāng)要表示的內(nèi)容是 7位 的時(shí)候就用一個(gè)字節(jié):0*******  第一個(gè)0為標(biāo)志位,剩下的空間正好可以表示ASCII 0-127 的內(nèi)容。

              當(dāng)要表示的內(nèi)容在 8 到 11 位的時(shí)候就用兩個(gè)字節(jié):110***** 10******  第一個(gè)字節(jié)的110和第二個(gè)字節(jié)的10為標(biāo)志位。

              當(dāng)要表示的內(nèi)容在 12 到 16 位的時(shí)候就用三個(gè)字節(jié):1110***** 10****** 10******    和上面一樣,第一個(gè)字節(jié)的1110和第二、三個(gè)字節(jié)的10都是標(biāo)志位,剩下的空間正好可以表示漢字。

              以此類推:
            四個(gè)字節(jié):11110**** 10****** 10****** 10****** 
              五個(gè)字節(jié):111110*** 10****** 10****** 10****** 10****** 
              六個(gè)字節(jié):1111110** 10****** 10****** 10****** 10****** 10****** 
              .............................................
             ..............................................

            明白了沒有?
            編碼的方法是從低位到高位

            現(xiàn)在就讓我們來看看實(shí)例吧!

            紅色為標(biāo)志位
            其它著色為了顯示其,編碼后的位置 

            Unicode十六進(jìn)制


            Unicode二進(jìn)制


            UTF8二進(jìn)制


            UTF8十六進(jìn)制


            UTF8字節(jié)數(shù)


            B


            00001011


            00001010


            B


            1


            9D


            00010011101


            11000010 10011101 


            C2 9D


            2


            A89E


            10101000 10011110


            11101010 10100010 10011110


            EA A2 9E


            3

            posted on 2007-04-05 17:23 true 閱讀(669) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 編碼知識(shí)
            国产精品久久久久影视不卡| 亚洲精品乱码久久久久久中文字幕| 无码人妻久久一区二区三区免费丨 | 久久九九亚洲精品| 久久精品无码av| 无码人妻久久一区二区三区免费| 久久精品国产亚洲一区二区| 91亚洲国产成人久久精品| 99久久国产亚洲综合精品| 青青青伊人色综合久久| 亚洲精品tv久久久久久久久| 99精品久久久久久久婷婷| 久久久久亚洲AV片无码下载蜜桃 | 久久精品无码一区二区三区| 久久一区二区免费播放| 久久精品国产亚洲AV无码偷窥| 久久精品无码av| 伊人久久大香线蕉精品| 日本欧美久久久久免费播放网| 99久久99久久精品国产片| 久久夜色精品国产噜噜亚洲AV | 99久久国产免费福利| 久久久亚洲欧洲日产国码二区| 污污内射久久一区二区欧美日韩| 久久99毛片免费观看不卡| 中文国产成人精品久久不卡| 色综合久久久久综合99| 亚洲国产成人久久综合一| 久久国产色AV免费看| 久久精品无码午夜福利理论片| 国产成人无码精品久久久性色| 亚洲а∨天堂久久精品| 性做久久久久久久久久久| 久久精品视屏| 2021国内精品久久久久久影院| 要久久爱在线免费观看| 蜜桃麻豆WWW久久囤产精品| 久久丫忘忧草产品| 亚洲AV成人无码久久精品老人| 精品久久久一二三区| 国产aⅴ激情无码久久|