linux下mysql中文亂碼問題解決辦法
linux下Mysql中文亂碼問題解決辦法
一、lampp環境下的資料庫亂碼問題
問題描述:
在做mysql練習的時候發現新建立的資料庫中插入資料表中的記錄中文出現亂碼的問題,如下圖:
經過多方查證,整裡如下文擋:
前提:
我自己的環境是使用的lampp下的mysql,該配置檔案是在/opt/lampp/etc/my.cnf;如果是自己安裝的mysql,那麼配置檔案一般都在/etc/my.cnf
解決辦法:
1、首先進入msyql,然後使用show variables like 'character%' ,執行編碼顯示,可以看到如下圖所示:
預設的是客戶端和伺服器都用了latin1,所以會亂碼。
2、修改/opt/lampp/etc/my.cof檔案
[client] #password = your_password port = 3306 socket = /opt/lampp/var/mysql/mysql.sock default-character-set=utf8 //新增該語句 [mysqld] user = mysql port=3306 socket = /opt/lampp/var/mysql/mysql.sock skip-external-locking key_buffer = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M character_set_server=utf8 //新增該語句 [mysql] no-auto-rehash default-character-set=utf8 //新增該語句
在mysql,mysqld,client下分別新增如上語句
注意:如果修改後不能啟動報錯試試把default-character-set=utf8改為character_set_server=utf8;我這裡遇到了該問題,所以去掉了default後就正常了 ,指令碼中沒有使用default-character-set=utf8。
3、使用命令drop database 資料庫名,刪除建立的資料庫
4、重啟mysql的服務:/opt/lampp/lampp restart
5、重新建立資料庫及表結構,再次插入資料即可正常使用,如下圖:
方法2:
網上還有另外一種使用SQL語句修改編碼值的,但是我試了一下,通過SQL語句是可以修改編碼值,但是重啟mysql服務後還是會變回原來的值,而且即便使用SQL語句修改過來後在重新建立資料表在插入資料還是會產生亂碼(也可能哪裡操做不對,但是不我提倡這麼修改)
使用SQL語句修改的方法:
1、首先進入mysql,然後在mysql下執行如下語句:
SET character_set_database = utf8;
SET character_set_server = utf8;
2、使用命令show variables like 'character%' ,執行編碼顯示,可以看到如下圖所示:
3、在使用create database test;建立資料庫,在該庫中建立資料表,然後在插入資料,檢視是否正常!
二、linux下yum自動安裝MySQL亂碼問題解決辦法
******************************************************************************************************************************************************
如果使用yum方法自動安裝的MySQL服務,則MySQL的配置檔案是在/etc/my.cnf;修改該檔案的時候可能出現該檔案中只有[mysqld]、[mysqld_safe],如果我們只是在mysqld下邊加入
default-character-set=utf8,無法將所有的選項都修改為utf8的格式,如下圖:
所以這裡我們需要在my.cnf檔案下手動配置[client]選項並在該選項下加入:default-character-set=utf8即可,如下圖:
新增完成後重啟MySQL的服務,然後在重新建立資料庫和資料表,之後在使用第三方管理工具連線就不會出現亂碼的問題了,如下圖。
總之遇到亂碼的問題,可以通過show variables like 'character%' ; 該命令進行檢視,將字符集設定成utf8後基本都會解決掉。
*******************************************************************************************************************************************************