1,使用這個語句檢視當前的編碼 show variables like 'char%';
1、編碼解釋
character_set_client: mysql使用該編碼來解讀客戶端傳送過來的資料,例如該編碼為utf8,那麼如果客戶端傳送過來的資料不是utf8,那麼就會出現亂碼
character_set_results:mysql會把資料轉換成該編碼後,再傳送給客戶端,例如該編碼為utf8,那麼如果客戶端不使用utf8來解讀,那麼就會出現亂碼
2、在cmd視窗下出現亂碼
* 插入或修改時出現亂碼:
> 這時因為cmd下預設使用gbk,而character_set_client不是gbk的原因。我們只需讓這兩個編碼相同即可。
> 因為修改cmd的編碼不方便,所以我們去設定character_set_client為gbk即可。
* 查詢出的資料為亂碼:
> 這是因為character_set_results不是gbk而是utf8,而cmd預設使用gbk的原因。我們只需讓這兩個編碼相同即可。
> 因為修改cmd的編碼不方便,所以我們去設定character_set_results為gbk即可。
* 設定變數的語句:
> set character_set_client=gbk;
> set character_set_results=gbk;
注意,設定變數只對當前連線有效,當退出視窗後,再次登入mysql,還需要再次設定變數。
為了一勞永逸,可以在my.ini中設定:
設定default-character-set=gbk即可。
指定預設編碼
我們在安裝mysql時已經指定了預設編碼為utf8,所以我們在建立資料庫、建立表時,都無需再次指定編碼。
為了一勞永逸,可以在my.ini中設定:
設定character-set-server=utf8即可。
character_set_client=utf8,無論客戶端傳送的是什麼編碼的資料,mysql都當成是utf8的資料!
> 若客戶端傳送的是gbk
> 伺服器會當成utf8對待
> 總結:必然亂碼!
處理問題的手段有兩種;
> 讓客戶端傳送utf8的資料(行不通)
> 把character_set_client修改為gbk
set character_set_client=gbk; --> 只在當前視窗內有效,也就是說,關閉視窗後,再開啟,又回到utf8了。
character_set_results=utf8,把資料用什麼編碼傳送給客戶端!
> 若伺服器傳送給客戶端的是utf8的資料
> 客戶端會把它當成gbk,因為我們的小黑屏,只能顯示gbk
> 總結:必然亂碼!
處理問題的手段有兩種:
> 讓伺服器傳送gbk的資料:set character_set_results=gbk
> 讓小黑屏使用utf8來解讀(行不通)
my.ini
在總配置檔案中進行配置,可以一勞永逸
[client]
port=3306
[mysql]
default-character-set=gbk /*它可以一勞永逸!它可以修改三個變數:client、results、connection*/
更多問題加本人qq 18048594067
mysql 中文亂碼問題
表現一 插入中文的時候顯示data too long 二 插入成功後,search出來的結果顯示亂碼.解決方法如下 1 只要是gb2312,gbk,utf8等支援多位元組編碼的字符集都可以儲存漢字,當然,gb2312中的漢字數量遠少於gbk,而gb2312,gbk等都可在utf8下編碼 2 用命令s...
mysql中文亂碼問題
環境 windows xp mysql notepad mysql語言設定沒有問題,因為直接使用insert語句往表中插入資料沒有問題,但把insert寫入到檔案中,通過source sql的形式插入,就會出現中文亂碼。這時候使用linux環境編寫.sql檔案,在拿到windows環境執行,沒有問題...
MySql中文亂碼問題
亂碼問題是經常遇到的問題,也是比較頭疼的問題,網上資料也非常多,最近在專案實施時也出現過這個問題,在此記錄下解決方式。先描述下我遇到的問題,開發環境為eclipse,編碼格式為utf 8,web伺服器為tomcat,編碼格式為utf 8,資料庫採用mysql,編碼格式如下 資料庫中表與字段的編碼全部...