中文亂碼問題在我們的mysql課程中常常出現,很多人在求助網路幫助的時候,往往達不到解決中文亂碼的目的,我這裡就我遇到過的一些問題進行彙總,並在以後不斷的新增新的問題!
1、初窺門徑
眾所周知,出現中文亂碼問題一定是由字符集編碼問題引發的,但是很多時候我們都是對mysql配置檔案my.ini中的如下**做改動
client section
to read this section. if you want your own mysql client program to
honor these values, you need to specify it as an option during the
mysql client library initialization.
[client]
port=3306
[mysql]
default-character-set = utf8
將其中的default-character-set型別改變為gbk,大部分情況下問題就能夠迎刃而解了。但是我們還需要進一步了解這些內容到底是在做什麼?
2、折戟沉沙
如果上面的方式解決不了問題,就需要我們再進一步的完善修改方式了,這時候你就需要檢視一下你的資料庫編碼:show variables like 'character%';
而上面解決不了的情況應該是如下資料庫編碼
資料庫編碼.png
我們發現全部都是utf8,為什麼還會出現問題?
c:\users\administrator>chcp 65001
然後,首先你看到的就是控制台變樣子了,之後還要使用右鍵視窗,設定控制台屬性如下圖
控制台屬性.png
選擇我現在所選字型。
問題是,接下來就能解決問題了嗎?
不能!接下來迎接你的是向資料庫中插入中文後,資料庫直接和你說byebye!是不是很驚愕,好了請改回gbk吧,此路不通,需要另尋它法!
怎麼改回?c:\users\administrator>chcp 936
3、小試牛刀
現在先讓我解釋一下各個引數的意義
– character_set_server:預設的內部操作字符集
– character_set_connection:連線層字符集
– character_set_results:查詢結果字符集
– character_set_database:當前選中資料庫的預設字符集
– character_set_system:系統元資料(欄位名等)字符集
了解了其中的字符集的奧秘,我們就知道了,如果需要插入中文,應該修改客戶端**資料使用的字符集set character_set_client='gbk';
如果需要查詢中文,應該查詢結果字符集set character_set_results='gbk';
但是這種方式只能在當前的控制台起到效果,在今後會將根本解決問題的方法拿上來!
4、再進一步
mysql資料庫修改字元編碼
修改資料庫字符集
alter database db_name default character set character_name [collate ...];
把錶預設的字符集和所有字元列(char,varchar,text)改為新的字符集:
alter table tbl_name convert to character set character_name [collate ...]
如:alter table student convert to character set utf8 collate utf8_general_ci;
修改表的預設字符集:
alter table tbl_name default character set character_name [collate...];
如:alter table student default character set utf8 collate utf8_general_ci;
修改欄位的字符集:
alter table tbl_name change c_name c_name character set character_name [collate ...];
如:alter table student change name name varchar(20) character set utf8 collate utf8_general_ci;
檢視資料庫編碼:
show create database db_name;
檢視表編碼:
show create table tbl_name;
檢視字段編碼:
show full columns from tbl_name;
簡述解決mysql中中文亂碼問題的基本思路及語句。
答:1、首先檢視mysql系統中字符集編碼型別
show variables like 'character%';
2、根據控制台預設字符集編碼型別,修改mysql系統中部分階段字符集編碼型別,包括client和results
set character_set_client='gbk';
set character_set_results='gbk';
除此以外應為支援中文字符集編碼型別
3、之後確認資料庫、資料表和字段的字符集編碼型別
檢視資料庫編碼:
show create database db_name;
檢視資料表編碼:
show create table tbl_name;
檢視字段編碼:
show full columns from tbl_name;
根據實際情況修改資料庫、資料表和字段的字符集編碼型別
修改資料庫編碼:
alter database db_name default character set character_name [collate ...];
修改資料表編碼:
alter table tbl_name default character set character_name [collate...];
修改字段編碼:
alter table tbl_name change c_name c_name character set character_name [collate ...];
mysql中文亂碼 簡書 MySQL中文亂碼
檢視編碼 show variables like character 修改編碼 mysql set character set client utf8 mysql set character set connection utf8 mysql set character set database u...
mysql中文亂碼
以前存db裡的東西都是英文本母,今天存了個中文,居然是個 鬱悶 ing。在命令列中 執行show variables like character 然後用set names utf8 set character set server utf8 然後在執行show variables like cha...
mysql 中文亂碼
丁總幫助解決亂碼問題總結 08 31 1.熱詞導流業務 資料庫編碼latin1,表編碼utf8,query欄位編碼utf8 關鍵 加入如下兩句 資料庫連線加入mysql set charset latin1 con arr temp query iconv gbk utf 8 row query 2...