mysql數據庫默認的編碼是:Latin1,要想支持中文需要修改爲gbk/utf8的編碼格式。
1、以root管理員身份查看數據編碼格式。
登陸命令:>mysql -u root –p 輸入密碼後如下命令查看數據編碼格式:
show variables like 'character%';
查詢結果如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
通過查詢結果顯示可以看出 數據庫編碼爲拉丁語,需要修改爲gbk或utf8.
character_set_client爲客戶端編碼方式;
character_set_connection爲建立連接使用的編碼;
character_set_database數據庫的編碼;
character_set_results結果集的編碼;
character_set_server數據庫服務器的編碼;
只要保證以上五個採用的編碼方式一樣,就不會出現亂碼問題。
2、修改數據庫編碼的步驟:
1)停止mysql服務。
2)修改mysql配置文件。
windows:安裝路徑下的:my.ini
linux:路徑一般爲:/etc/mysql/my.cnf
3)找到客戶端配置[client] 在下面添加
default-character-set=utf8 默認字符集爲utf8
4)在找到[mysqld] 添加
default-character-set=utf8 默認字符集爲utf8
init_connect='SET NAMES utf8' (設定連接mysql數據庫時使用utf8編碼,以讓mysql數據庫爲utf8運行)
5)修改好後,重新啓動mysql查看當前數據編碼格式。
>show variables like 'character%';
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
3、MySQL指定編碼的方式是非常靈活並多樣化的,可以指定表級別的編碼,行級別編碼,甚至可以指定字段級別的編碼。
以下示例給出創建數據庫時指定編碼的兩種方式:
1)CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
2)create database if not exists netctoss default character set utf8;
3)如果你採用的是外部接入的方式,可以在連接中確定請求的編碼格式如:jdbc:mysql://localhost:3306 /mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出現任何空格,否則出錯)
4、若Commandline終端查看數據顯示亂碼則執行如下命令:
set names gbk(注意,不是UTF-8) 來修改窗口級別的編碼格式解決終端亂碼問題。
注意:set names gbk只可以修改character_set_client、character_set_connection、 character_set_results的編碼方式,並且這種修改是窗口級別的,只針對當前窗口有效,打開新窗口修改無效,數據庫底層的編碼方式不會被改變,插入數據後還是以utf8編碼方式存儲。