MySQL字符集問題

2021-09-06 08:43:53 字數 1089 閱讀 7640

資料庫字符集問題,是面試過程中經常被問到的,注意面試官給你挖坑的時候,不要往裡面跳。

mysql 5.5 之前,utf8 編碼只支援1-3個位元組,只支援bmp這部分的unicode編碼區,bmp是從哪到哪?

基本就是 0000 ~ ffff 這一區。

從mysql 5.5 開始,可支援4個位元組utf編碼utf8mb4,乙個字元最多能有4位元組,所以能支援更多的字符集。

utf8mb4 is a superset of utf8

utf8mb4 相容utf8,且比utf8能表示更多的字元。

至於什麼時候用,看你做的什麼專案了。。。

在做移動應用時,會遇到ios使用者在文字的區域輸入emoji表情,如果不做一定處理,就會導致插入資料庫異常。

mysql 5.0 以上的版本:

1、乙個漢字佔多少長度與編碼有關:

utf-8:乙個漢字 = 3個位元組,英文是乙個位元組

gbk: 乙個漢字 = 2個位元組,英文是乙個位元組

utf-8對中文採用3個位元組,對英文採用1個位元組;gbk對中文採用2個位元組,對英文採用1個位元組; 

2、varchar(n) 表示n個字元,無論漢字和英文,mysql都能存入 n 個字元,僅實際位元組長度有所區別。

utf8: 

1character=3bytes, 1漢字=1character 

也就是說乙個字段定義成 varchar(200),則它可以儲存200個漢字或者200個字母。 

gbk: 

1character=2bytes,1漢字=1character 

也就是說乙個字段定義成 varchar(200),則它可以儲存200個漢字或者200個字母。

varchar(n),  這裡的n是指字元數,並不是位元組數.占用的位元組數與編碼有關

3、mysql檢查長度,可用sql語言 select length(fieldname) from tablename 這個命令可以看到各行使用的位元組數。

sql語句:select length(欄位名) from 表名; 

總結:mysql中,(varchar 30 ,varchar是幾就可以存幾個文符)

mysql字符集問題 mysql字符集問題

我們新建mysql資料庫的時候,需要指定資料庫的字符集,一般我們都是選擇utf8這個字符集,但是還會又乙個utf8mb4這個字符集,好像和utf8有聯絡,今天就來解析一下這兩者的區別。起源mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容...

mysql字符集問題 mysql字符集問題

用show variables like char 檢視mysql的引數,結果應如下 mysql show variables like char variable name value character set client gbk character set connection gbk ch...

mysql字符集問題 MySql字符集問題

mysql字符集問題 xinjinlong 2010 11 14 22 10 47 閱讀 1334 上次說了一下c從mysql裡面讀取資料,這次在介紹一下如何把mysql的字符集設定為utf8 第一 檢視自己mysql的字符集 mysql show variables like character ...