mysql資料庫 中文亂碼

2021-06-29 08:05:17 字數 2824 閱讀 5036

參考文章   

本文有些長情況複雜, 可直接看最下面  8 總結 解決方案

1.mysql資料庫中文顯示亂碼

命令列中也是

在sqlyog裡面顯示?? ,在命令列也顯示??

2. 命令   show variables like 'character%';

從上圖中可以看到 mysql 有六處使用了字符集,分別為:client 、connection、database、results、server 、system。

其中與伺服器端相關:database、server、system; 與

客戶端相關:connection、client、results 。

client

為客戶端使用的字符集。

connection

為連線資料庫的字符集設定型別,如果程式沒有指明連線資料庫使用的字符集型別則按照伺服器端預設的字符集設定。

database

為資料庫伺服器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用伺服器安裝時指定的字符集設定。

results

為資料庫給客戶端返回時使用的字符集設定,如果沒有指明,使用伺服器預設的字符集。

server

為伺服器安裝時指定的預設字符集設定。

system

為資料庫系統使用的字符集設定。

如果這六個 ,有好幾個不一樣那必定出現亂碼。

在 mysql 的安裝目錄下有乙個 my.ini 配置檔案,通過修改這個配置檔案可以一勞永逸的解決亂碼問題。在這個配置檔案中 

[mysql] 與

客戶端配置相關,[mysqld] 與伺服器配置相關。預設配置如下:

編碼不一樣,會出現問題,也有的時候,編碼都一樣 ,還是會出現亂碼,

有可能,資料庫匯出的sql檔案,記得檢視,你要匯入的sql檔案的資料庫的每張表的charset 是否是相同的

有時候在你安裝的資料庫的前後字符集設定不一樣 ,和匯入的sql檔案中的字符集不一樣也會出現亂碼

最終圖形介面中的顯示正常

4 ,現在是   ,圖形介面顯示正常中文,命令列顯示亂碼

5,了解了上面的資訊我們來分析下亂碼的原因,

問題出在了當前的 cmd 客戶端視窗,因為當前的 cmd 客戶端輸入採用 gbk 編碼,而資料庫的編碼格式為 utf-編碼不一致導致了亂碼產生。而當前 cmd 客戶端的編碼格式無法修改,所以只能修改 connection、 client、results 的編碼集來告知伺服器端當前插入的資料採用 gbk 編碼,而伺服器的資料庫雖然是採用 utf-8 編碼,但卻可以識別通知伺服器端的 gbk 編碼資料並將其自動轉換為 utf-8 進行儲存。可以使用如下語句來快速設定與客戶端相關的編碼集:

設定完成後即可解決客戶端插入資料或顯示資料的亂碼問題了,但我們馬上會發現這種形式的設定只會在當前視窗有效,當視窗關閉後重新開啟 cmd 客戶端的時候又會出現亂碼問題;那麼,如何進行乙個一勞永逸的設定呢?在 mysql 的安裝目錄下有乙個 my.ini 配置檔案,通過修改這個配置檔案可以一勞永逸的解決亂碼問題。在這個配置檔案中 

[mysql] 與

這時只需要將下的預設編碼 default-character-set=utf8 改為 

default-character-set=gbk ,重新啟動 mysql 服務即可。

修改mysql的配置檔案    my.ini    中的 mysql     default-character-set=gbk

6  修改完成後,重啟mysql 服務,重新進入命令列介面  ,中文顯示正常

圖形介面sqlyog中顯示正常,新加入的  管理員  不是亂碼形式

7 所有的編碼都是 utf8    圖形介面正常 ,命令列亂碼                                 

8 總結

方案一:所有的編碼都設定成utf8  沒有情況 3  ,那麼 圖形介面顯示正常,  只是在命令列中顯示亂碼

方案二:在圖形介面顯示正常 ,沒有情況 3 , 也要在命令列中顯示正常  

將下的預設編碼配置檔案my.ini  

default-character-set=utf8 改為 

default-character-set=gbk ,重新啟動 mysql 服務即可

Mysql資料庫中文亂碼

資料庫儲存資料的時候經常會出現亂碼。導致亂碼的原因可能有三種 1.資料本身與資料庫指定的字符集不同,則需要在插入資料之前,將資料的編碼格式轉換成與資料庫指定字符集相同,或者也可以將資料庫指定的字符集該為與資料相同的字符集。2.資料庫指定的字符集本身不支援中文,例如latin。3.如果用 操作插入資料...

mysql資料庫中文亂碼

情況一 資料庫編碼格式和客戶端的編碼格式不一樣,有中文的情況全部設定為utf 8 包括 資料庫編碼格式,表編碼格式,開發工具編碼格式,頁面顯示編碼格式 情況二 全部設定為utf 8後依然亂碼,可能是安裝資料時的預設編碼格式不是utf 8,請修改資料庫預設編碼格式,或者在連線資料庫時url附加引數?u...

資料庫中文亂碼問題(mysql)

好多朋友都遇到過資料庫中訪問中文亂碼的情況,要解決有很多方法,這裡給我我個人遇到的情況!首先要做到的是將資料庫與程式統一編碼 都用utf 8,或都用gbk,gb2312.下面給出的是都用utf 8的例子 1.建資料庫時要把資料庫的型別設定為utf 8的,2.連線資料庫時要宣告採用utf 8字符集 c...