對MySQL中字元集的相關設定作業的基本教程_Mysql

來源:互聯網
上載者:User

1、查看字元集相關變數

mysql> show variables like 'character%';
+————————–+——————————-+| Variable_name      | Value             |+————————–+——————————-+| character_set_client   | latin1            || character_set_connection | latin1            || character_set_database  | latin1            || character_set_filesystem | binary            || character_set_results  | latin1            || character_set_server   | latin1            || character_set_system   | utf8             || character_sets_dir    | c:\wamp\mysql\share\charsets\ |+————————–+——————————-+


2、字元集轉換過程
用戶端——–字元集轉換器———–服務
gbk ————gbk-utf8-utf8———-utf8
gbk————-gbk-gbk-utf8———-utf8
用戶端要告訴服務端使用的編碼是什麼,然後沒有直接告訴伺服器而告訴“轉換器”
字元集轉換器收到用戶端資訊後查看伺服器是什麼編碼,然後將用戶端傳來的字元集轉換成伺服器設定的字元集
伺服器向用戶端發送資訊時也是先告訴“轉換器”

3、字元集變數解釋

character_set_client                     
用戶端字元集,串連mysql的用戶端程式的字元集,該變數告訴轉換器用戶端發送的字元集。

 character_set_connection
轉換器轉換要轉換成的字元集

character_set_server
服務端使用的字元集,存入資料時使用的字元集

character_set_results
查詢的結果是什麼編碼

推論:什麼時候會出現亂碼

1:client 什麼與實際不符,微軟命令提示字元預設是gbk,如果設定成utf8就會出現亂碼

2:results與用戶端頁面不符的時候

什麼時候會遺失資料

connection和伺服器的字元集比client小時,會遺失資料,比如用戶端是utf8而轉換器是gbk

當用戶端是utf8 而服務端是 gbk時要設定

set character_set_client=utf8

set character_set_connection=gbk/utf8 這裡設定什麼都可以,因為最終轉換器會根據伺服器的類型進行轉換

set character_set_results=utf8

4、設定字元集變數

set names utf8     進入mysql設定所用的字元集

在my.conf中添加

[client]default-character-set=utf8[mysqld]default-character-set=utf8

5.修改mysql字元集
將latin1字元集的資料庫修改成gbk字元集的資料庫的過程
(1)、匯出表結構

mysqldump -uroot -p –default-character-set=gbk -d DATABASE_NAME > createtable.sql

        –default-character-set=gbk 表示以什麼字元集串連
        -d 表示只匯出表結構,不匯出資料
(2)、修改createtable.sql檔案中的表結構定義的字元集為新字元集
(3)、匯出所有記錄

mysqldump -uroot -p –quick –no-create-info –extend-insert –default-character-set DATABASE_NAME > data.sql

        –quick:改訊息用於轉儲大的表。它強制mysqldump從伺服器一次一行的檢索表中的行二不是檢索所有行,並在輸出錢將它緩衝到記憶體中
        –extended-insert:使用包括幾個values列表的多行insert文法。這樣轉儲檔案更小,重載檔案時可以加速插入
        –no-create-info:不重新建立每個轉儲表的create table 語句
        –default-character-set=latin1:安裝原有的字元集匯出所有資料,這樣匯出的檔案中,所有中文都是可見的,不會儲存成亂碼
(4)、頻寬data.sql,將set names latin1 修改成set names gabk
(5)、使用新的字元集建立新的資料庫

create database DATABASE_NAME default charset gbk;

(6)、建立表,執行createtable.sql

mysql -uroot -p DATABASE_NAME < createtable.sql

(7)、匯入資料,執行data.sql

mysql -uroot -p DATABASE_NAME < data.sql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.