漢字與位元組

2022-02-14 12:03:03 字數 1700 閱讀 5578

資料庫表字段為varchar(n)型別,存英文很簡單,只要字母個數不大於n即可。

但是對於漢字,按照同樣的方法就不行了。因為對於漢字不同的字符集,在資料庫占用的位元組是不一樣的。

utf-8字符集,乙個漢字佔三個位元組,gbk字符集,乙個漢字佔兩個位元組,比如varchar(10)型別的字段,utf-8的漢字,只能存3個,gbk字符集的漢字卻能存5個。

所以在程式中根據表字段varchar的大小,儲存或更新時作出必要的校驗否則後台會報錯。

位元組就是byte

漢字=2/3位元組

1位元組(byte)=8字位=8個二進位制數

1字位(bit)=1個二進位制數

1b=8b   1kb=1024b  1mb=1024kb 1gb=1024mb

通常情況下,把b稱為位元組、b稱為字位、kb稱為千位元組、mb稱為兆位元組、gb稱為吉位元組。

string name = "a"

;

int num =encoding.utf8.getbytes(name).length;//1

string name2 = "a"

;

int num2 =encoding.utf8.getbytes(name2).length;//1

string name3 = "朱"

;

int num3 =encoding.utf8.getbytes(name3).length;//3

string name4 = "0"

;

int num4 =encoding.utf8.getbytes(name4).length;//1

string name5 = "朱朱"

;

int num5 = encoding.utf8.getbytes(name5).length;//6

英文本母:位元組數 : 

1;  編碼:gb2312

位元組數 :

1;  編碼:gbk

位元組數 :

1;  編碼:gb18030

位元組數 :

1;  編碼:iso-8859-1位元組數 :

1;  編碼:utf-8位元組數 :

4;  編碼:utf-16

位元組數 :

2;  編碼:utf-16be

位元組數 :

2;  編碼:utf-16le中文漢字:位元組數 :

2;  編碼:gb2312

位元組數 :

2;  編碼:gbk

位元組數 :

2;  編碼:gb18030

位元組數 :

1;  編碼:iso-8859-1

位元組數 : 3;  編碼:utf-8位元組數 :

4;  編碼:utf-16

位元組數 :

2;  編碼:utf-16be

位元組數 :

2;  編碼:utf-16le

漢字是兩個位元組嗎?(非也,漢字位元組與編碼格式有關)

位元組數 1 編碼 gb2312 位元組數 1 編碼 gbk 位元組數 1 編碼 gb18030 位元組數 1 編碼 iso 8859 1 位元組數 1 編碼 utf 8 位元組數 4 編碼 utf 16 位元組數 2 編碼 utf 16be 位元組數 2 編碼 utf 16le位元組數 2 編碼 ...

bit ,byte,位,位元組,漢字關係

1 bit 1 二進位制資料 1 byte 8 bit 1 字母 1 byte 8 bit 1 漢字 2 byte 16 bit 1.bit 位 乙個二進位制資料0或1,是1bit 2.byte 位元組 儲存空間的基本計量單位,如 mysql中定義 varchar 45 即是指 45個位元組 1 b...

bit byte 位 位元組 漢字的關係

bit byte 位 位元組 漢字的關係 1 bit 1 二進位制資料 1 byte 8 bit 1 字母 1 byte 8 bit 1 漢字 2 byte 16 bit 4.乙個漢字佔2個位元組 1 漢字 2 byte 16 bit 5.標點符號 a 漢字輸入狀態下,預設為全形輸入方式 b 英文輸...