MySQL資料庫中文亂碼的解決辦法

2021-06-09 19:13:01 字數 1769 閱讀 5582

mysql資料庫中文亂碼的解決辦法

mysql的字符集和校對規則有4個級別的預設設定:伺服器級、資料庫級、表級和連線級。我們解決中文亂碼的方法就順著這幾個級別來分別設定。比較常見的是由於沒有設定連線級的字符集導致的亂碼。

1、伺服器級字符集

伺服器級也就是當伺服器啟動時根據配置檔案中的字符集來載入。當前的伺服器字符集和校對規則可以用作character_set_server和collation_server系統變數的值。在執行時能夠改變這些變數的值。針對伺服器級,我們有兩個方法可以解決。

a、重新編譯mysql

更改設定值的乙個方法是通過重新編譯。如果希望在從源程式構建時更改預設伺服器字符集和校對規則,使用:--with-charset和--with-collation作為configure的參量。例如:

shell> ./configure --with-charset=utf8

b、不重新編譯,只修改當前配置檔案

開啟/etc/mysql/my.cnf修改編碼:

在[mysqld]下新增:default-character-set=utf8

在[client]下新增:default-character-set=utf8

在[mysql]下新增:default-character-set=utf8

然後重啟mysql應該就可以了!

2、資料庫級字符集

預設資料庫的字符集和校對規則可以用作character_set_database和 collation_database系統變數。無論何時預設資料庫更改了,伺服器都設定這兩個變數的值。如果沒有 預設資料庫,這兩個變數與相應的伺服器級別的變數(character_set_server和collation_server)具有相同的值。

a、重新建資料庫,並指定預設字符集

資料庫級是在新建資料庫時指定該資料庫預設的字符集。

mysql>create database db_name character set charset_name ;

比如:

mysql>create database db_name character set utf8 ;

b、不重新建資料庫,通過alter database來修改資料庫的預設字符集

如果之前在建表的時候沒有指定character set charset_name,也可以通過以下重新指定:     mysql>alter database db_name character set charset_name ;

比如:

mysql>alter database db_name character set utf8 ;

3、表級字符集

如果在表定義中沒有指定表字符集和校對規則,則預設使用資料庫字符集和校對規則。

a、重新建表,並指定預設字符集

表級字符集是在建立表的時候指定該錶的預設字符集。

mysql>create table tbl_name (column_list) default character set charset_name ;

b、不重新建表,通過alter table來修改表的預設字符集

如果之前在建表的時候沒有指定character set charset_name,也可以通過以下重新指定:     mysql>alter table tbl_name default character set charset_name ;

備註:列級別的字符集和表級別字符集的規則類似,也可以在建表的語句裡面指定,若沒有指定則預設使用表級別的字符集,若表也沒有指定預設字符集,則往上推。

MySQL資料庫 完美解決中文資料亂碼

mysql會出現中文亂碼的原因不外乎下列幾點 1.server本身設定問題,例如還停留在latin1 2.table的語系設定問題 包含character與collation 3.客戶端程式 例如php 的連線語系設定問題 強烈建議使用utf8 utf8可以相容世界上所有字元 一 避免建立資料庫及表...

mysql資料庫 中文亂碼

參考文章 本文有些長情況複雜,可直接看最下面 8 總結 解決方案 1.mysql資料庫中文顯示亂碼 命令列中也是 在sqlyog裡面顯示?在命令列也顯示?2.命令 show variables like character 從上圖中可以看到 mysql 有六處使用了字符集,分別為 client co...

Mysql資料庫中文亂碼

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