推薦 | 超實用的MySQL數(shù)據(jù)庫亂碼問題的對應方式
概述
MySQL中數(shù)據(jù)庫亂碼一般進行字符集的設(shè)定即可,但是亂碼可以出現(xiàn)在各個階段,所以這篇文章整理一下亂碼出現(xiàn)的各個階段以及對應方法。

建庫/建表時添加charset設(shè)定
1、建庫
2、建表

客戶端顯示
locale
確認locale設(shè)定是否為UTF8方式,一般服務器端沒有問題,僅在客戶端存在問題。或者一部分客戶端有問題,往往就是客戶端顯示設(shè)定存在問題。
mysql設(shè)定
使用show variables like ‘%character%'進行確認,一般修改character_set_database和character_set_server可以僅在當前session修改設(shè)定
使用mysql命令可以進行session范圍內(nèi)的字符集設(shè)定
1、局部設(shè)定
僅在當前session起作用,設(shè)定方式為:
2、全局設(shè)定
多個session起作用的設(shè)定方式為:
當然session方式會再數(shù)據(jù)庫重啟后失效,需要持久化保存,同樣的設(shè)定要設(shè)定到mysql的配置文件my.cnf中即可.
這樣在創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫表的時候缺省就是指定的utf8了
如果是純粹的顯示問題,很多時候還有可能是由于character_set_results設(shè)定顯示的。
使用show variables like ‘%character%'進行確認,如果設(shè)定不正確,可以使用如下方式解決

數(shù)據(jù)庫數(shù)據(jù)導出導入
1、數(shù)據(jù)庫數(shù)據(jù)導出
一般使用mysqldump進行數(shù)據(jù)庫導出會使用如下命令
如果出現(xiàn)亂碼,可以實現(xiàn)添加如下Option
mysqldump -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫名稱 >mysqlbackup.sql
如果含有blob類型,則需要使用hex-blob選項進行mysqldump導出
2、數(shù)據(jù)庫數(shù)據(jù)導入
導入的時候如果出現(xiàn)問題,也可考慮添加字符級的設(shè)定
mysql -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫名稱 <mysqlbackup.sql
也可使用如下方式,導入之前執(zhí)行如下命令
- set names utf8;
以上就是本文的全部內(nèi)容,希望對大家有所幫助。



























