更新時(shí)間:2022-11-16 來源:黑馬程序員 瀏覽量:
導(dǎo)讀:
作為一個(gè)數(shù)據(jù)庫的初學(xué)者,遇到數(shù)據(jù)庫亂碼問題,是一個(gè)比較頭疼的問題,下面根據(jù)我的使用經(jīng)驗(yàn),給大家分享幾種解決mysql數(shù)據(jù)庫亂碼問題的方式,希望對(duì)大家有幫助。
一、我們需要將默認(rèn)的字符集更改為utf-8來解決數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)的亂碼問題:
我們需要先查看數(shù)據(jù)庫默認(rèn)的字符集是什么:
show variables like 'character_set_%'
查看所有的默認(rèn)字符集
mysql> show variables like 'character_set_%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec)
其中character_set_database和character_set_server的字符集mysql默認(rèn)為latin1。
我們需要將其更改為utf-8的字符需要用到下面兩行代碼:
set character_set_database=utf8; set character_set_server=utf8;
然后我們做字符集查詢
show variables like 'character_set_%'
得到:
mysql> show variables like 'character_set_%'; +--------------------------+---------------------------------------------------------+ | 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 | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.00 sec)
之后創(chuàng)建的所有的數(shù)據(jù)庫的字符集都默認(rèn)為utf-8的字符集 .這個(gè)時(shí)候我們?cè)偃プ鲎址牟迦霑r(shí)就可以看到漢字被成功插入不會(huì)再出現(xiàn)亂碼問題。
二、更改數(shù)據(jù)庫和表的字符集的方法
alter database 數(shù)據(jù)庫名 charset utf8; alter table 數(shù)據(jù)表名 convert to character set utf8;
三、導(dǎo)入數(shù)據(jù)庫的方法
Windows系統(tǒng)
source d:/table.sql(*.sql文件所處的盤位置)
linux系統(tǒng)
source /home/hhh/桌面/tables.sql;
總結(jié):
上面給大家介紹了三種解決mysql亂碼的方法,因?yàn)槲覀儗黹_發(fā)的系統(tǒng),基本上都會(huì)涉及到非英文的數(shù)據(jù),因此建議大家使用第一種方式,把數(shù)據(jù)庫服務(wù)器的默認(rèn)編碼方式改成utf8,這樣以后不管什么時(shí)候使用,都不會(huì)發(fā)生亂碼問題!