Mysql資料庫亂碼出現的各個階段以及對應方法

liumiaocn發表於2019-03-07

  MySQL中資料庫亂碼一般進行字符集的設定即可,但是亂碼可以出現在各個階段,所以這篇文章整理一下亂碼出現的各個階段以及對應方法。

  建庫/建表時新增charset設定

建庫

  CREATE DATABASE 資料庫名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

建表

  create table 表名(欄位構成詳細列表資訊) default charset=utf8;

客戶端顯示

locale

  確認locale設定是否為UTF8方式,一般伺服器端沒有問題,僅在客戶端存在問題。或者一部分客戶端有問題,往往就是客戶端顯示設定存在問題。

  確認命令:locale

mysql設定

  使用show variables like ‘%character%'進行確認,一般修改character_set_database和character_set_server可以僅在當前session修改設定

  使用mysql命令可以進行session範圍內的字符集設定

  確認命令(mysql):show variables like '%character%'

區域性設定

  僅在當前session起作用,設定方式為:

  set character_set_database=utf8

全域性設定

  多個session起作用的設定方式為:

  set global character_set_database=utf8

  當然session方式會再資料庫重啟後失效,需要持久化儲存,同樣的設定要設定到mysql的配置檔案my.cnf中即可.

  這樣在建立資料庫或者建立資料庫表的時候預設就是指定的utf8了

  如果是純粹的顯示問題,很多時候還有可能是由於character_set_results設定顯示的。

  使用show variables like ‘%character%'進行確認,如果設定不正確,可以使用如下方式解決

  set character_set_results='utf8';

資料庫資料匯出

  一般使用mysqldump進行資料庫匯出會使用如下命令

  mysqldump -u使用者名稱 -p使用者密碼 資料庫名稱 >mysqlbackup.sql

  如果出現亂碼,可以實現新增如下Option

  mysqldump -u使用者名稱 -p使用者密碼 --default-character-set=utf8 資料庫名稱 >mysqlbackup.sql

  如果含有blob型別,則需要使用hex-blob選項進行mysqldump匯出

  mysqldump -u使用者名稱 -p使用者密碼 --hex-blob 資料庫名稱 >mysqlbackup.sql

資料庫資料匯入

  匯入的時候如果出現問題,也可考慮新增字元級的設定

  mysql -u使用者名稱 -p使用者密碼 --default-character-set=utf8 資料庫名稱

  也可使用如下方式,匯入之前執行如下命令

  set names utf8;

總結

  以上就是Mysql資料庫亂碼出現的各個階段以及對應方法的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,

相關文章