MySQL 中文亂碼解決,mysql中文亂碼
測試環境:服務端和用戶端均為win7,MySql資料庫、表字元集為utf-8,欄位字元集與表一致。1、使用mysql命令進行操作時的亂碼問題解決。
(1)設定當前字元集
set names gbk
(2)修改單個字元集參數
使用命令show variables like 'char%',查看所有字元集變數。
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\mysql-5.6.25-winx64\share\charsets\ |
+--------------------------+----------------------------------------+
修改單個字元集:
set character_set_results=gbk
注意:該方法設定的參數在伺服器重啟後失效。
2、mysqldump匯出時亂碼問題解決(1)匯出有兩種情況:一是匯出表結構,二是匯出表結構和資料。
匯出全表:
mysqldump -uroot -p [databasename] --table [tablename]
只匯出表結構:
mysqldump -uroot -p [databasename] --table [tablename] -d
(2)實驗
經測試,在控制台環境,匯出表結構時,無論怎麼設定--default-character-set參數,均無法正常顯示欄位注釋中的中文,命令如下:
mysqldump -uroot -p --default-character-set=gbk test --table t_data
但表資料中的中文可以正常顯示(通過設定--default-character-set=gbk)。
但是,若匯出為檔案,則可以正常顯示,命令樣本如下:
mysqldump -uroot -p --default-character-set=gbk mydb --table t_data -d > t_data.sql
有趣的是,不管--default-character-set設定為何值(gbk,utf8,latin1)均能正常顯示,在控制台顯示亂碼和控制台本身有一定的關係。
(3)總結
在控制台環境,表結構中的中文欄位注釋總是不能正常顯示,使用管道輸出到檔案,則總能正常顯示(使用UltraEdit開啟)。
表資料中必須通過參數設定--default-character-set=gbk來控制正常輸出中文,包括控制台顯示或用管道輸出到檔案。
也就是說--default-character-set=gbk 僅對錶資料的編碼處理生效,對錶結構欄位注釋中的中文無效。
參考:
1、查看建立表使用的字元集:
show create table [tableName]
2、查看錶欄位使用的字元集:
show full columns from [tableName]
3、查看錶
show tables;
4、查看錶資訊
desc [tablename]
5、查看資料庫
show databases;
6、查看資料庫資訊
show create database test;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。