1.以utf8編碼儲存漢字(乙個漢字佔3位元組)
建立測試表
create
table
`dist` (
`id`
int(11) not
null auto_increment,
`col2`
varchar(2) character
set utf8 collate utf8_general_ci default
null,
) engine=innodb auto_increment=9
default charset=utf8;
為表中col2 字段插入值
通過 length(field)查詢插入字段值的實際占用記憶體大小
select col2, length(col2) from dist ;
col2 length(col2)
昂發 6
ab 2
昂 3
確實在utf8編碼下漢字佔3個位元組,其他每個字元佔一位元組
再來看看字段儲存的字元個數,通過char_length(field)
select col2, char_length(col2) from dist;
col2 length(col2)
昂發 2
ab 2
昂 1
結果為col2欄位實際儲存的字元的個數
2.以gbk編碼儲存漢字(乙個漢字佔2位元組)
先來建個表
create
table gbk_test(
id int ,
gbk_char1 varchar(1),
gbk_char2 varchar(2)
)engine = innodb default charset = gbk;
直接看結果
select gbk_char2, length(gbk_char2) from gbk_test
gbk_char2 length(gbk_char2)
昂是 4
1 1
a 1
aa 2
在gbk編碼下乙個漢字實際佔2個位元組
select gbk_char2, char_length(gbk_char2) from gbk_test
gbk_char2 length(gbk_char2)
昂是 2
1 1
a 1
說 1實際儲存個數也出現啦!
漢字的統一與儲存編碼
今天碰巧看了下unicode編碼問題,計算機的世界真是太神奇了。因為中日韓等多個地區都有自己漢字的寫法,統計起來漢字個數就非常多了,如果文字採用16位全球文字編碼 ucs 2標準 六萬多個位置估計放漢字都不夠。所以把一些同字異形的漢字統一成相同的編碼,從而節省空間,這是十分有必要的。其中漢字編碼有個...
mysql 編碼和漢字儲存占用位元組問題的探索
mysql 5.5 之前,utf8 編碼只支援1 3個位元組,只支援bmp這部分的unicode編碼區,bmp是從哪到哪?基本就是 0000 ffff 這一區。從mysql 5.5 開始,可支援4個位元組utf編碼utf8mb4,乙個字元最多能有4位元組,所以能支援更多的字符集。utf8mb4 is...
MySQL漢字轉換拼音 儲存函式
mysql漢字轉換拼音 儲存函式 begin declare tmp str varchar 255 charset gbk default 擷取字串,每次做擷取後的字串存放在該變數中,初始為函式引數in string值 declare tmp len smallint default 0 tmp ...