java中如何把utf8編碼轉換為UTF16

編程語言 Java 科技 從頭開始自學java 2017-06-22

UTF8是使用最廣泛的一種Unicode實現方式,UTF8是一種變長的編碼方式,使用1~4個字節表示一個符號。

UTF8編碼規則

1)單字節字符第一位為0,後面7位為該符號的Unicode編碼。

英語字母的UTF8編碼跟ASCII碼是相同的。

2)n(n>1)個字節的字符,第一個字節的前n位都為1,第n+1位為0,其他字節的前兩位均為10。其他的二進制位就是該字符的Unicode編碼。

0yyy yyyy(小於0x80)

110y yyyy 10yy yyyy

1110 yyyy 10yy yyyy 10yy yyyy

1111 0yyy 10yy yyyy 10yy yyyy 10yy yyyy

如何解析UTF8編碼

UTF8三個字節以內(包括三個字節)的編碼是很容易轉換為UTF16編碼的:

如果是單個字節的UTF8編碼,則直接(char) c即可;

如果是雙字節的UTF8編碼:

110y yyyy

& 0001 1111

10xx xxxx

& 0011 1111

第一個字節移動6位,因為第二個自己有效位數是6位,結果如下

yyy yyxx xxxx

如果是三字節的UTF8編碼:

1110 zzzz

& 0000 1111

10yy yyyy

& 0011 1111

10xx xxxx

&0011 1111

經過移位,結果如下

zzzz yyyy yyxx xxxx

你會發現就是把UTF8中的佔位符號,比如1110,110,10等去掉,其他的位拼在一起就是UTF16.

java中如何把utf8編碼轉換為UTF16

四字節的UTF8編碼如何轉換為UTF16呢?

java中如何把utf8編碼轉換為UTF16

完整代碼如下:

java中如何把utf8編碼轉換為UTF16

相關推薦

推薦中...