对UTF8编码的初步认识!
在網絡中有很多地方都有采用UTF8編碼,由于要編寫與郵件服務端有關的程序,而郵件服務端有些地方用到了UTF8編碼,所以對它有了初步的認識!
它其實和Unicode是同類,就是在編碼方式上不同!
首先UTF8編碼后的大小是不一定,不像Unicode編碼后的大小是一樣的!
我們先來看Unicode的編碼:一個英文字母 “a” 和 一個漢字 “好”,編碼后都是占用的空間大小是一樣的,都是兩個字節!
而UTF8編碼:一個英文字母“a” 和 一個漢字 “好”,編碼后占用的空間大小就不樣了,前者是一個字節,后者是三個字節!
現在就讓我們來看看UTF8編碼的原理吧:
因為一個字母還有一些鍵盤上的符號加起來只用二進制七位就可以表示出來,而一個字節就是八位,所以UTF8就用一個字節來表式字母和一些鍵盤上的符號。然而當我們拿到被編碼后的一個字節后怎么知道它的組成?它有可能是英文字母的一個字節,也有可能是漢字的三個字節中的一個字節!所以,UTF8是有標志位的!
當要表示的內容是 7位 的時候就用一個字節:0******* 第一個0為標志位,剩下的空間正好可以表示ASCII 0-127 的內容。
當要表示的內容在 8 到 11 位的時候就用兩個字節:110***** 10****** 第一個字節的110和第二個字節的10為標志位。
當要表示的內容在 12 到 16 位的時候就用三個字節:1110***** 10****** 10****** 和上面一樣,第一個字節的1110和第二、三個字節的10都是標志位,剩下的空間正好可以表示漢字。
以此類推:
四個字節:11110**** 10****** 10****** 10******
五個字節:111110*** 10****** 10****** 10****** 10******
六個字節:1111110** 10****** 10****** 10****** 10****** 10******
.............................................
..............................................
明白了沒有?
編碼的方法是從低位到高位
現在就讓我們來看看實例吧!
黃色為標志位
其它著色為了顯示其,編碼后的位置
總結
以上是生活随笔為你收集整理的对UTF8编码的初步认识!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史上最NB程序员的自白
- 下一篇: [java进阶]2.Jedis基础与Li