讀:
作為一個數據庫的初學者,遇到數據庫亂碼問題,是一個比較頭疼的問題,下面根據我的使用經驗,給大家分享幾種解決mysql數據庫亂碼問題的方式,希望對大家有幫助。
一、我們需要將默認的字符集更改為utf-8來解決數據庫導入數據的亂碼問題:
我們需要先查看數據庫默認的字符集是什么:
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 | 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默認為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)
之后創建的所有的數據庫的字符集都默認為utf-8的字符集 .這個時候我們再去做字符集的插入時就可以看到漢字被成功插入不會再出現亂碼問題.
二、更改數據庫和表的字符集的方法
alter database 數據庫名 charset utf8;
alter table 數據表名 convert to character set utf8;
三、導入數據庫的方法
Windows系統
source d:/table.sql(*.sql文件所處的盤位置)
linux系統
source /home/hhh/桌面/tables.sql;
總結:
上面給大家介紹了三種解決mysql亂碼的方法,因為我們將來開發的系統,基本上都會涉及到非英文的數據,因此建議大家使用第一種方式,把數據庫服務器的默認編碼方式改成utf8,這樣以后不管什么時候使用,都不會發生亂碼問題!
出現的問題: 我這頁面存中文到數據庫會亂碼 我打了斷點 中文是傳到后臺dao層的 然后我試了下 把我本地項目連服務器數據庫 保存不會亂碼 我就懷疑是本地數據庫有問題 然后我用navicat寫了個update的sql查詢語句 存進去不會亂碼
問題分析:應該還是我本地數據庫的問題 本地數據庫編碼方式有問題
解決辦法:1、cmd 管理員運行 mysql -hlocalhost -uroot -p
登錄mysql 執行 show variables like 'character_set_%';
查看到character_set_database不是utf8
2、管理員運行cmd--> net stop mysql
然后在安裝mysql的目錄下找到 my.ini文件 打開之后 修改以下地方
cmd重啟 net start mysql
登錄mysql 查看show variables like 'character_set_%';
這樣 應該數據庫就不會出現中文亂碼的問題了