告別亂碼 修改MySQL資料庫的預設字符集

2021-08-31 05:44:59 字數 1726 閱讀 5994

在上篇文章裡說到,**會出現亂碼的原因已經找到了,都是因為mysql資料庫的字符集不統一!所以,要解決亂碼的問題,只要把mysql資料庫的字符集統一就起,就萬事ok了!這裡教大家怎樣修改mysql資料庫的預設字符集。

想必大家做的大部分也都是中文站,筆者推薦大家做站都盡量的使用utf-8的編碼格式。至少utf-8編碼格式的好處,筆者這裡就不在多說了,感興趣的朋友可以去gg一下。修改mysql的預設字符集是通過修改它的配置檔案來實現的。一般分兩種情況:

windows平台:

windows下的mysql配置檔案是my.ini,一般在mysql安裝目錄的根目錄下面,開啟配置檔案,找到default-character-set項,直接修改為:

default-character-set=utf8

然後重新啟動mysql,就可以了!

還有一種修改字符集的方法,就是使用mysql的命令:

mysql> set character_set_client = utf8 ;  

mysql> set character_set_connection = utf8 ; 

mysql> set character_set_database = utf8 ; 

mysql> set character_set_results = utf8 ; 

mysql> set character_set_server = utf8 ; 

mysql> set collation_connection = utf8 ; 

mysql> set collation_database = utf8 ; 

mysql> set collation_server = utf8 ; 

類unix平台

在類unix平台下,方法跟windows平台下面類似,只是配置檔案的存放目錄與windows系統下的不太一樣,linux下的mysql配置檔案是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:

find / -iname my.cnf 

找到default-character-set項,直接修改為:

default-character-set=utf8

然後重新啟動mysql,就可以了!

注意:一般就算設定了表的預設字符集為utf8並且通過utf-8編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連線層上。解決方法是在傳送查詢前執行一下下面這句:

set names 'utf8'; 

它相當於下面的三句指令:

set character_set_client = utf8;  

set character_set_results = utf8; 

set character_set_connection = utf8; 

總結:因此,使用什麼資料庫版本,不管是3.x,還是4.0.x還是4.1.x,其實對我們來說不重要,重要的有二:

1) 正確的設定資料庫編碼.mysql4.0以下版本的字符集總是預設iso8859-1,mysql4.1在安裝的時候會讓你選擇。如果你準備使用utf- 8,那麼在建立資料庫的時候就要指定好utf-8(建立好以後也可以改,4.1以上版本還可以單獨指定表的字符集)

2) 正確的設定資料庫connection編碼.設定好資料庫的編碼後,在連線資料庫時候,應該指定connection的編碼,比如使用jdbc連線時,指定連線為utf8方式.

Mysql資料庫亂碼

以前用mysql都是安裝的時候把字符集設定為utf 8,所以很少出現亂碼,今天在用wampserver中的mysql時,發現提交到資料庫的中文亂碼,因為很清楚建表使用utf 8,服務端也使用utf 8,就是因為換了資料庫伺服器後出現亂碼,看來問題肯定是出在資料庫伺服器上,於是檢視mysql配置檔案發...

Mysql資料庫亂碼

以前用mysql都是安裝的時候把字符集設定為utf 8,所以很少出現亂碼,今天在用wampserver中的mysql時,發現提交到資料庫的中文亂碼,因為很清楚建表使用utf 8,服務端也使用utf 8,就是因為換了資料庫伺服器後出現亂碼,看來問題肯定是出在資料庫伺服器上,於是檢視mysql配置檔案發...

Mysql資料庫亂碼

我的資料庫版本是wamp server 中的mysql5.6.17資料庫。之前用的不是wamp server中的mysql資料庫,沒出現亂碼問題。現在講一下這個問題,這個資料庫亂碼是連線springboot專案時遇到的亂碼問題,亂碼情況如下。命令列檢視資料庫編碼格式,開啟命令列方法在資料庫 test...