首頁技術(shù)文章正文

Mysql數(shù)據(jù)庫亂碼解決方案

更新時(shí)間:2022-11-16 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  導(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ā)生亂碼問題!

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!