MySQL學習筆記 - 字符編碼

如何向mysql5數據庫插入中文 ———— JAVA學習室(http://www.java3z.com)java

向mysql5數據庫正常插入中文,操做以下: 
1.把字符集設定爲能支持中文的gbk(在my.ini文件中改)
2.把數據庫的Client Characterset和Conn. Characterset的字符集都設定爲gbk;
        SET character_set_client=gbk; 
        SET character_set_connection=gbk;
以後再嘗試向數據庫插入中文,這時插入沒有出錯,但查詢顯示是亂碼。最後再更改;
        SET character_set_results=gbk;
這樣以後,全部的問題都解決了,能正常插入也能正常顯示了。
若是還不正常,能夠在建立數據庫時指定編碼gbk, 以下所示
(1)create database if not exists test default character set gbk;
注意:有些人可能會問,創建數據庫表時候還沒設置編碼呢?其實,若是你容器編碼是gbk的,則表也是gbk,以下設置表編碼爲gbk:
CREATE TABLE IF NOT EXISTS test( 
test_id int auto_increment, 
test_name varchar(50) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
(2)鏈接設置編碼爲gbk 
dao.drivername=com.mysql.jdbc.Driver 
dao.url=jdbc:mysql://localhost:3306/asking?useUnicode=true&characterEncoding=gbk 
dao.username= 
dao.passwd=

MySQL 亂碼的根源是的 MySQL 字符集設置不當的問題,下面彙總了有關查看 MySQL 字符集的命令。包括查看 MySQL 數據庫服務器字符集、查看 MySQL 數據庫字符集,以及數據表和字段的字符集、當前安裝的 MySQL 所支持的字符集等。mysql

1、查看 MySQL 數據庫服務器和數據庫字符集。
mysql> show variables like '%char%';
包括客戶端和服務器字符集,以及數據庫存儲的字符集
+--------------------------+--------------------------------
| 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            | D:\MySQL\share\charsets\ |......  
+--------------------------+---------------------------------

2、查看 MySQL 數據表(table)的字符集。
mysql> show table status from java3z_chinajsp like '%article%'; (article爲表名)sql

3、查看 MySQL 數據列(column)的字符集。
mysql> show full columns from article;
4、查看當前安裝的 MySQL 所支持的字符集。
mysql> show char set; //charset, or character set
5、經過MySQL命令行修改字符集:
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
要想知道遠程主機上mysql服務器使用的字符集,可先鏈接到遠程主機上的MYSQL。數據庫

假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令:
mysql -h110.110.110.110 -u root -p abce123;(注:u與root之間能夠不用加空格)
退出MYSQL命令:exit(回車)服務器

 

MySQL正常插入並顯示中文數據需知足的條件 —— 網易博客jsp

MySQL數據庫默認編碼已是utf8了, default-character-set = utf8,但是向數據庫中表中插入中文時,卻總是出現 ....\xB5\xA5\xD1\xA1 for column...這樣的錯誤,通過查閱網上類型的錯誤後,發現一個很奇妙的現象,接下來咱們就來開始介紹。學習

1、在安裝數據庫時就設定字符集編碼爲utf8的環境下編碼

在當前字符集編碼爲:url

Server characterset: utf8
Db characterset: utf8 
Client characterset: utf8 
Conn. characterset: utf8spa

建立數據庫:

(1)插入中文數據,操做不能成功。

(2)修改字符集編碼爲:

Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk

插入中文數據,顯示正常。

2、在安裝數據庫時就設定字符集編碼爲gbk的環境下

1. 當前字符集編碼是:

Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk

建立數據,插入中文數據,操做正常,顯示正常。

2. 當前字符集編碼爲utf8:

Server characterset: gbk
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

3. 當前字符集編碼爲utf8:

Server characterset: gbk
Db characterset: gbk
Client characterset: utf8
Conn. characterset: utf8

插入中文數據,操做不能執行。

結論:向數據庫正常插入中文,必須知足如下條件:

1. 要把字符集設定爲能支持中文的gbk或則utf8;

2. 把數據庫的Client Characterset和Conn. Characterset的字符集都設定爲gbk;

根據上面的提示 ,我更改了:

SET character_set_client=gbk;
SET character_set_connection=gbk; 


以後再嘗試想數據庫插入中文,這時沒有出錯,能插入但是查詢出來是亂碼。

最後再更改;

SET character_set_results=gbk;

這樣以後,全部的問題都解決了,能正常插入也能正常顯示了。

關於MySQL數據庫正常插入中文數據並能正常顯示的條件就介紹到這裏,但願經過本次的介紹可以帶給您一些收穫吧!

 

修改mysql數據庫編碼 —————— www.cnblogs.com

修改my.ini文件,在其中添加:
default-character-set=gb2312
設置數據庫字符集格式:
alter database da_name default character set 'charset'
1)設置數據庫編碼 /etc/my.cnf 
[mysqld] 
default-character-set=gbk 
... 
[client] 
default-character-set=gbk 
--------------------------------------- 
2)按字符集導出 
$mysqldump -u root -p dbname --default-character-set=gbk > a.sql; 
3)查看SQL文件的編碼 
> file a.sql 
a.sql: UTF-8 Unicode ... 
> iconv -f utf-8 -t gbk a.sql > a2.sql 
> file a2.sql 
a2.sql: Non-ISO extended-ASCII English text 這時已是gbk的編碼了 
3)導入數據
查看數據庫服務和客戶端字符集 
mysql> status; 
Server characterset: gbk 
Db characterset: gbk 
Client characterset: latin1 
Conn. characterset: latin1 
mysql> set names 'gbk';
mysql> status; 
Server characterset: gbk 
Db characterset: gbk 
Client characterset: gbk 
Conn. characterset: gbk 
這時才能導入數據 
mysql> source a.sql;  ----------------------------------------------------------------------------------  單獨設置某個數據庫:  alter database testdb character set ‘utf8’;  查看mysql支持的編碼: show character set; 查看系統的字符集: SHOW VARIABLES LIKE ''character_set_%'';

相關文章
相關標籤/搜索