MySQL数据库乱码 - Linux下乱码问题解决
前言
亂碼問題是很讓人抓狂的問題,下面我將記錄一下Linux下MySQL亂碼問題的解決方法。
mysql在linux下亂碼問題
一、操作
mysql默認(rèn)字符集是latin1,但是我們大部分程序使用的字符集是utf8,我們就需要修改mysql的字符集了。
1)查看默認(rèn)編碼
show variables like 'character%';+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ Mysql下默認(rèn)的編碼是latin12)查看默認(rèn)排序方式
show variables like 'collation_%';+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-----------------+3)修改默認(rèn)字符集
修改文件/etc/my.cnf內(nèi)容
在[client]下添加如下語句
default-character-set=utf8在[mysqld]下添加
default-character-set=utf8init_connect='SET NAMES utf8' ##設(shè)定連接mysql是使用UTF8編碼修改好后,重啟mysql服務(wù)即可
4)另外一種修改字符編碼方法
登錄mysql后,輸入如下內(nèi)容
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 ;5)重新查看
show variables like 'character%';+--------------------------+---------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir |/usr/share/mysql/charsets/ | +--------------------------+---------------------------------+show variables like 'collation_%';+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+6)使用JDBC連接mysql時(shí)需要將連接字符串改為如下方式:
jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=UTF-8已utf8的方式連接
二、概念
character-set-server/default-character-set:服務(wù)器字符集,默認(rèn)情況下所采用的。character-set-database:數(shù)據(jù)庫字符集。character-set-table:數(shù)據(jù)庫表字符集。character-set-client:客戶端的字符集。客戶端默認(rèn)字符集。當(dāng)客戶端向服務(wù)器發(fā)送請求時(shí),請求以該字符集進(jìn)行編碼。character-set-results:結(jié)果字符集。服務(wù)器向客戶端返回結(jié)果或者信息時(shí),結(jié)果以該字符集進(jìn)行編碼。統(tǒng)一設(shè)置字符集編碼使用語句:set names utf8三、導(dǎo)入導(dǎo)出防止亂碼
1、導(dǎo)出數(shù)據(jù)庫使用命令(在cmd下輸入)
mysqldump -u用戶名 -p密碼 -h服務(wù)器地址 數(shù)據(jù)庫名稱 --default-character-set=utf8 --hex-blob >導(dǎo)出數(shù)據(jù)庫.sql--default-character-set=utf8 代表使用urf8編碼導(dǎo)出數(shù)據(jù)--hex-blob 代表以16進(jìn)制導(dǎo)出數(shù)據(jù)庫2、導(dǎo)入數(shù)據(jù)庫使用命令(在cmd下輸入)
mysql -u用戶名 -p密碼 -h服務(wù)器地址 數(shù)據(jù)庫名稱 --default-character-set=utf8 --hex-blob <導(dǎo)出數(shù)據(jù)庫.sql
除了使用上面的命令導(dǎo)入數(shù)據(jù)庫外,還可以登錄mysql,使用source命令導(dǎo)入
mysql> source 導(dǎo)出數(shù)據(jù)庫.sql注:blob字段存放的是二進(jìn)制數(shù)據(jù),故其沒有字符集編碼,在window和linux使用以上方式還是會有亂碼的問題,故建議將blob類型修改為text類型,才不會出現(xiàn)亂碼。blob類型數(shù)據(jù)往text類型轉(zhuǎn)換,自己寫一個簡單的代碼,從blob讀出數(shù)據(jù)以字符串的形式存到text字段即可。
轉(zhuǎn)自:http://blog.csdn.net/fengshuiyue/article/details/10046317
總結(jié)
以上是生活随笔為你收集整理的MySQL数据库乱码 - Linux下乱码问题解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于本地mysql客户端如何连接阿里云服
- 下一篇: linux cmake编译源码,linu