gb2312中的英文本母佔幾個位元組?

2021-08-02 23:06:05 字數 2241 閱讀 8635

byte bb="hello".getbytes("gb2312");

system.out.println("bb.length:::"+bb.length);

for(byte bb1:bb)

system.out.println((char)bb1);

執行**得到如下結果:

bb.length:::5he

llo我查了一些資料,都說gb2312中的所有字元都是用二個位元組表示。如果是這樣,那我上面的程式中bb位元組陣列的長度應該是10啊

可結果卻是卻是5.我想請問gb2312中的英文本母符號到底是用幾個位元組表示啊?

ascii 英文乙個位元組 

gb2312,gbk 中文兩個位元組,英文乙個位元組 

在中文系統中ansi一般指gb2312或gbk 

gb2312、gbk都屬於雙位元組字符集 (dbcs) 

utf-8 中文三個位元組,英文乙個位元組 

unicode 中文兩個位元組,英文兩個字

嘿嘿,權威的如何解釋gb2312不是sun公司,而是我們國家自己的標準啊,每乙個大專、大學的任何學生,其計算機基礎課程中都會詳細講解gb2312的啊。

byte bb="hello".getbytes("gb2312"); 

system.out.println("bb.length:::"+bb.length); 

我查了一些資料,都說gb2312中的所有字元都是用二個位元組表示。如果是這樣,那我上面的程式中bb位元組陣列的長度應該是10啊 

可結果卻是卻是5.我想請問gb2312中的英文本母符號到底是用幾個位元組表示啊?

答:gb2312中1區到15區共682個字元或圖形符號都是全形方式下的字元。即:

若byte bb="hello".getbytes("gb2312");(注意是全形方式下),bb位元組陣列的長度就會是10了。

因此:gb2312中的所有字元都是用二個位元組表示(是因為:它的字元都是全形方式)。gb2312中不會對半形方式下的字元編碼的(這是ascii碼的事情),因此:在getbytes("gb2312");轉換時,半形的字元都是乙個位元組,全形的同樣字元才是兩個位元組。

新建乙個txt檔案,分別以ansi、unicode、utf-8編碼另存三個檔案,刪除原始檔案,如下所示:

可以看到unicode.txt、utf-8.txt兩個檔案在檔案內容為空時檔案大小已經不是0了,這個問題待會我們再討論。

然後我們使用ultraedit工具開啟三個檔案,

在檔案內容為空時幾個檔案的大小如上圖所示。

接下來我們繼續做實驗,在三個檔案中都輸入乙個英文本元[a

],然後再看下每個檔案大小的變化

通過對比可以發現:

(記得計算時要分別減去之前空檔案所佔的字元長度)

ansi_gbk英文本元佔1byte

unicode英文本元佔2byte

utf-8英文本元佔1byte

好,我們接著來測試中文字元的長度,然後再在每個檔案中輸入乙個中文字元[我]

通過對比可以發現:

(記得計算時要分別減去之前空檔案所佔的字元長度)

ansi_gbk中文字元佔2byte

unicode中文字元佔2byte

utf-8中文字元佔3byte

gb2312中的英文本母佔幾個位元組?

gbk中字元是乙個或者兩個位元組,單位元組00 7f這個區間和ascii是一樣的 雙位元組字元的第乙個位元組在81 fe之間,通過這個可以判斷是單位元組還是雙位元組 byte bb hello getbytes gb2312 system.out.println bb.length bb.lengt...

gb2312中的英文本母佔幾個位元組?

byte bb hello getbytes gb2312 system.out.println bb.length bb.length for byte bb1 bb system.out.println char bb1 執行 得到如下結果 bb.length 5he llo我查了一些資料,都說...

列舉GB2312中的漢字

build gcc g gb.c o gb.exe characters in gb2312 are divided into codepoints,with each codepoint comprising 94 glyphs characters.the codepoints can be d...