Mysql數(shù)據(jù)庫(kù)亂碼出現(xiàn)的各個(gè)階段以及對(duì)應(yīng)方法

2019-03-07 14:15:49 來(lái)源:互聯(lián)網(wǎng)作者:liumiaocn 人氣: 次閱讀 558 條評(píng)論

MySQL中數(shù)據(jù)庫(kù)亂碼一般進(jìn)行字符集的設(shè)定即可,但是亂碼可以出現(xiàn)在各個(gè)階段,所以這篇文章整理一下亂碼出現(xiàn)的各個(gè)階段以及對(duì)應(yīng)方法。...

  MySQL中數(shù)據(jù)庫(kù)亂碼一般進(jìn)行字符集的設(shè)定即可,但是亂碼可以出現(xiàn)在各個(gè)階段,所以這篇文章整理一下亂碼出現(xiàn)的各個(gè)階段以及對(duì)應(yīng)方法。

  建庫(kù)/建表時(shí)添加charset設(shè)定

建庫(kù)

  CREATE DATABASE 數(shù)據(jù)庫(kù)名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

建表

  create table 表名(字段構(gòu)成詳細(xì)列表信息) default charset=utf8;

客戶端顯示

locale

  確認(rèn)locale設(shè)定是否為UTF8方式,一般服務(wù)器端沒(méi)有問(wèn)題,僅在客戶端存在問(wèn)題。或者一部分客戶端有問(wèn)題,往往就是客戶端顯示設(shè)定存在問(wèn)題。

  確認(rèn)命令:locale

mysql設(shè)定

  使用show variables like ‘%character%'進(jìn)行確認(rèn),一般修改character_set_database和character_set_server可以僅在當(dāng)前session修改設(shè)定

  使用mysql命令可以進(jìn)行session范圍內(nèi)的字符集設(shè)定

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

局部設(shè)定

  僅在當(dāng)前session起作用,設(shè)定方式為:

  set character_set_database=utf8

全局設(shè)定

  多個(gè)session起作用的設(shè)定方式為:

  set global character_set_database=utf8

  當(dāng)然session方式會(huì)再數(shù)據(jù)庫(kù)重啟后失效,需要持久化保存,同樣的設(shè)定要設(shè)定到mysql的配置文件my.cnf中即可.

  這樣在創(chuàng)建數(shù)據(jù)庫(kù)或者創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候缺省就是指定的utf8了

  如果是純粹的顯示問(wèn)題,很多時(shí)候還有可能是由于character_set_results設(shè)定顯示的。

  使用show variables like ‘%character%'進(jìn)行確認(rèn),如果設(shè)定不正確,可以使用如下方式解決

  set character_set_results='utf8';

數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出

  一般使用mysqldump進(jìn)行數(shù)據(jù)庫(kù)導(dǎo)出會(huì)使用如下命令

  mysqldump -u用戶名 -p用戶密碼 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql

  如果出現(xiàn)亂碼,可以實(shí)現(xiàn)添加如下Option

  mysqldump -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql

  如果含有blob類型,則需要使用hex-blob選項(xiàng)進(jìn)行mysqldump導(dǎo)出

  mysqldump -u用戶名 -p用戶密碼 --hex-blob 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql

數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入

  導(dǎo)入的時(shí)候如果出現(xiàn)問(wèn)題,也可考慮添加字符級(jí)的設(shè)定

  mysql -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫(kù)名稱

  也可使用如下方式,導(dǎo)入之前執(zhí)行如下命令

  set names utf8;

總結(jié)

  以上就是Mysql數(shù)據(jù)庫(kù)亂碼出現(xiàn)的各個(gè)階段以及對(duì)應(yīng)方法的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,

您可能感興趣的文章

相關(guān)文章