程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫亂碼-Linux下亂碼問題一

MySQL數據庫亂碼-Linux下亂碼問題一

編輯:MySQL綜合教程

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下默認的編碼是latin1   2)查看默認排序方式  
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=utf8   init_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字段即可。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved