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