久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中charset=utf8的示例分析

150次閱讀
沒有評論

共計 1880 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹了 mysql 中 charset=utf8 的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

1、先來查看一個建表語句

create table student(
 sid int primary key aotu_increment,
 sname varchar(20) not null,
 age int
)charset=utf8;

思考一個問題:

當(dāng)我們建表時,不指定 charset=utf8 的時候,此時插入中文,為什么會報錯呢?

當(dāng)指定 charset=utf8 后,再次插入中文,為什么又可以插入中文,并且不亂碼呢?

2、查看 CMD 黑窗口的字符集

打開 CMD 黑窗口– 鼠標(biāo)放在窗口最上方– 點擊鼠標(biāo)右鍵– 屬性– 點擊選項

通過上圖可以知道:CMD 中輸入文字使用的字符編碼是 GBK。同時你在保存文件的時候,經(jīng)常會看到 ANSI 字符集,這個代表的是本地字符集,我們在中國,本地字符集使用的就都是 GBK 編碼。

3、你注意這個問題了嗎?

客戶端 client 輸入的字符,都是采用 GBK 編碼的。mysql 服務(wù)器存儲的字符又是 UTF8 編碼的。那么,我們對數(shù)據(jù)庫、表進(jìn)行增刪改查,最后返回到客戶端界面中,要想保證字符不亂碼,肯定是經(jīng)過了 編碼轉(zhuǎn)換過程的。我要問的是,究竟是什么東西完成了這個編碼的轉(zhuǎn)換過程的?

4、你不熟悉的幾個 mysql 操作命令

--  查看數(shù)據(jù)庫支持的所有的字符集 (這句命令自己下去操作)。mysql  show character set;
--  查看系統(tǒng)當(dāng)前狀態(tài),里面可以看到部分字符集設(shè)置。mysql  status;
--  查看系統(tǒng)字符集設(shè)置,包括所有的字符集設(shè)置
mysql  show variables like  %char%

操作結(jié)果如下:

通過上圖我們可以看到有一個叫做 connection 的東西,中文名叫做 連接器。連接器 就是用來進(jìn)行 編碼轉(zhuǎn)換過程 的。

1)連接器的特性

①“連接器的作用”:

連接客戶端與服務(wù)端,進(jìn)行字符集的轉(zhuǎn)換。連接器有這種自動轉(zhuǎn)換的功能。

②“連接器的工作流程”:
Ⅰ首先,客戶端的字符先發(fā)給連接器,連接器選擇一種編碼將其轉(zhuǎn)換 (轉(zhuǎn)換之后的編碼,與連接器的編碼格式一致),進(jìn)行臨時存儲。
Ⅱ 接著,連接器再次轉(zhuǎn)換成與服務(wù)器一致的編碼,并最終存儲在服務(wù)器中。
Ⅲ 然后,服務(wù)器返回的結(jié)果,再次先通過連接器,連接器仍然是選擇一種編碼將其轉(zhuǎn)換 (轉(zhuǎn)換之后的編碼,與連接器的編碼格式一致),進(jìn)行臨時存儲。
Ⅳ 最后,連接器再將結(jié)果轉(zhuǎn)化為與客戶端一致的字符集,就可以在客戶端正常顯示了。

2)圖示說明連接器 connection 的作用

圖一:

圖一說明如下:

圖二:

圖二說明如下:

5、對上述兩個圖的實戰(zhàn)演示

1)首先,了解如下幾個代碼。

-- 1)設(shè)置客戶端的字符集。set character_set_client=gbk;
-- 2)設(shè)置連接器的字符集。set character_set_connection=utf8;
-- 3)設(shè)置返回結(jié)果的字符集。set character_set_results=gbk;

2)代碼演示過程,詳細(xì)地寫在如下鏈接中的 sql 文件中,可以自行下載,查看。

http://note.youdao.com/noteshare?id=3fe60a490637d1a51ac78bf4a9e7e4d0 sub=511D73BDDEA34D9BAC565249035D74A8

6、產(chǎn)生亂碼的兩個原因

解碼與實際編碼,不一致導(dǎo)致的亂碼,可修復(fù)。

在傳輸過程中,由于編碼不一致,導(dǎo)致部分字節(jié)丟失,造成的亂碼,不可修復(fù)。

1)編碼和解碼不一致導(dǎo)致的亂碼

2)傳輸過程中,丟失字節(jié)導(dǎo)致的亂碼。

7、對實際情況的分析 (什么都不設(shè)置,系統(tǒng)默認(rèn)是如何呢?)

1)仔細(xì)查看如下圖片

根據(jù)上圖可以知道 (好好理解下面的文字說明):

mysql 中 charset=utf8 的示例分析

圖二:

mysql 中 charset=utf8 的示例分析

2)set names gbk 的含義

--  當(dāng)客戶端、連接器、返回值的字符集相同,并且都是 gbk 的時候,我們可以采取如下的簡寫方式: set names gbk;
 --  上述 sql 語句其實包含了如下三層意思: set character_set_client=gbk;
 set character_set_connection=gbk;
 set character_set_results=gbk;

感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysql 中 charset=utf8 的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計1880字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 古交市| 阿克| 略阳县| 梅州市| 青州市| 华蓥市| 文昌市| 资中县| 达日县| 三穗县| 大化| 东海县| 抚宁县| 临湘市| 九台市| 宁国市| 潞西市| 呼图壁县| 罗源县| 赤峰市| 诏安县| 屯留县| 宁化县| 汾西县| 怀仁县| 九台市| 邻水| 新营市| 莆田市| 子长县| 北辰区| 闻喜县| 吉安县| 六枝特区| 徐闻县| 广南县| 兰州市| 永川市| 体育| 自治县| 灵寿县|