05.28 java中一個漢字佔用幾個字節?答案原來是這樣的!

char型變量中能不能存貯一箇中文漢字。確定下一個漢字到底佔幾個字符?

char類型可以存儲一箇中文漢字。因為Java中char的編碼方式為UTF-16BE。UTF-16編碼使用2或者4字節,在65536以內的佔兩個字節。而基本上所有中文的Unicode編碼在19968到40869之間——既Unicode至少包含了20902個漢字,所以一個char類型可以存儲一個漢字。

java中一個漢字佔用幾個字節?答案原來是這樣的!

佔用的字節

GB2312

GB2312標準主要針對的是簡體中文常見字符,包括約7000個漢字,不包括一些罕用詞,不包括繁體字。

java中一個漢字佔用幾個字節?答案原來是這樣的!

GBK

GBK建立在GB2312的基礎上,向下兼容GB2312,也就是說,GB2312編碼的字符和二進制表示,在GBK編碼裡是完全一樣的。需要注意的是,低位字節是從0x40也就是64開始的,也就是說,低位字節最高位可能為0。

java中一個漢字佔用幾個字節?答案原來是這樣的!

GB18030

GB18030向下兼容GBK,增加了五萬五千多個字符,共七萬六千多個字符。包括了很多少數民族字符,以及中日韓統一字符。

java中一個漢字佔用幾個字節?答案原來是這樣的!

Big5

Big5是針對繁體中文的,廣泛用於臺灣香港等地。

Big5包括1萬3千多個繁體字,和GB2312類似,一個字符同樣固定使用兩個字節表示。在這兩個字節中,高位字節範圍是0x81-0xFE,低位字節範圍是0x40-0x7E和0xA1-0xFE。

java中一個漢字佔用幾個字節?答案原來是這樣的!

總之,byte是1個字節,char是兩個字節,但是char裡可以存一個漢字,這麼說漢字就佔用兩個字節?String類型裡的漢字,按照編碼格式的不同,分為2-4個字節的佔用,UTF-8佔用3個字節,特別的佔用4個字節。GBK裡漢字確實是佔用2個字節。UTF-16裡漢字一般佔2個字節,特殊的是4個字節。

java中一個漢字佔用幾個字節?答案原來是這樣的!

綜上所述,那要看漢字是以什麼編碼格式來存儲了,以及漢字是否為特殊漢字。


分享到:


相關文章: