標籤:
一、操作
mysql預設字元集是latin1,但是我們大部分程式使用的字元集是utf8,我們就需要修改mysql的字元集了。
1)查看預設編碼
showvariables 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)查看預設排序方式
showvariables 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)重新查看
showvariables 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/|
+--------------------------+---------------------------------+
showvariables 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欄位即可。
mysql在linux下亂碼問題