linux下插入的mysql數據亂碼問題
問題描述:
在做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;創建數據庫,在該庫中創建數據表,然後在插入數據,查看是否正常!
參考文檔:
http://www.pc6.com/infoview/Article_63586.html
http://blog.csdn.net/mengzhengjie/article/details/50040527
linux下插入的mysql數據亂碼問題