MySQL字符集編碼相關

2022-01-30 01:21:22 字數 2891 閱讀 3646

windows 10家庭中文版,mysql  5.7.20,2018-05-07

part.1 查詢資料庫的字符集編碼

檢視mysql字符集編碼:status命令

使用命令列登入mysql伺服器,然後輸入status命令,可以檢視到伺服器的字符集編碼及其它資訊。

從下圖可以看到,我的伺服器(server characterset)、資料庫(db characterset)的字符集編碼是latin1。

上圖找到了四個字符集編碼,它們各自代表什麼意思呢?

-server characterset

資料庫伺服器的預設字符集編碼,在後續建立資料庫時,若無指定字符集編碼,則新建的資料庫預設使用此字符集編碼。

-db characterset

當前沒有選擇資料庫(use database_name)時,顯示新建資料庫的預設字符集編碼,同server character;若已選擇數

據庫,則顯示資料庫的真實字符集編碼。下圖顯示了乙個字符集編碼為utf8的資料庫的status資訊。

客戶端本身的字符集編碼 和 客戶端和伺服器此時建立連線所使用的字符集編碼。

說明,show variables命令可以顯示資料庫的所有系統變數——全部 或者 根據需要查詢,裡面的有些變數可以放到資料庫的啟動

配置檔案my.ini中,從而修改資料庫的配置資訊。更多資料和權威資訊,請參考官網鏈結server system variables

part.2 修改資料庫預設字符集編碼

兩個問題:

為什麼要修改預設字符集編碼?

預設的是latin1,不支援中文,而我要儲存的資料報括中文,因此,要更改。

當然,不更改也可以,這樣的話,每次建立新的資料庫時就需要指定字符集編碼,如下:

create database if not exists test2 default charsetutf8collateutf8_general_ci;

將預設字符集編碼修改為什麼?

utf8(是utf8,不是utf-8,沒有短橫線)!

兩種方式:

1.在命令列客戶端修改

set character_set_server=utf8;

警告,這種方式在命令列客戶端重啟後無效。

試驗:修改後建立資料庫,檢查新建資料庫的字符集編碼,預期是utf8。

2.在資料庫伺服器配置檔案my.ini中修改

在my.ini檔案中新增下面兩行中任意一行即可預設字符集編碼設定為utf8(存在於[mysqld]下面):

character_set_server = utf8

character-set-server = utf8

兩行有什麼區別嗎?第一行用下劃線連線,第二行用短橫線連線,但是,都有效。

再次強調,是utf8,不是utf-8(短橫線)。

這種方式就沒有第一種的問題了,但是呢,配置後需要重啟資料庫伺服器才會生效。

part.3 附錄

1.show variables、show status(顯示資料庫伺服器狀態)顯示的內容太多——一屏顯示不完,怎麼辦呢?

輸出到檔案中!

方法如下:

mysql -uroot -p -e "show variables" > d:\mysql.txt

回車,輸入root賬號密碼,再回車即可將結果儲存到d盤的mysql.txt檔案中(儲存到csv檔案中或許更好?)。

注意,show variables命令用雙引號括起來,單引號不行。

2.可以使用show character set;檢視mysql資料庫伺服器支援的字符集

3.伺服器、資料庫、表的字符集編碼關係

若在建立資料庫時沒有指定,則其字符集編碼 同 伺服器;

若在資料庫中建立表時沒有指定,則其字符集編碼 同 所在資料庫。

不過,伺服器、資料庫、表的編碼都可以通過命令列進行修改(各個欄位的字符集編碼也可以單獨指定)。

4.檢視表table的編碼

使用show create table...命令,如下圖所示。

5.遺留問題

my.ini配置檔案中的[mysqld]、[client]、[mysql]分別意味著什麼?

字符集編碼相關

bom byte order mark 位元組序標記,bom的作用有兩個,一是標記文字的編碼型別,二是標記文字編碼的位元組序,文字檔案的最開頭都會有bom標記 windows預設編碼是ansi,不帶bom utf 8 3byte ef bb bf utf 16 be 2byte fe ff utf ...

mysql字符集編碼

檢視編碼字符集 show variables like collation show variables like character set 在命令列修改字元編碼 例如gb3212 set character set client gb2312 客戶端編碼方式 set character set ...

mysql字符集相關問題 MySQL 字符集問題

mysql 支援許多字符集及其編碼方案,甚至是不同編碼之間的轉換.在使用 mysql 進行應用程式程式設計時,常常會出現亂碼現象,這通常是由於客戶端沒有宣告與 mysql 伺服器通訊的字串編碼造成的後果.解決方案 設定變數 character set client 檢視當前資料庫的字符集 show ...