您的位置:首页 > 数据库 > MySQL

正确设定mysql的字符集编码的探索---需要向数据库中插入中文数据

2011-06-14 22:57 489 查看
一。数据库安装时设定的字符集编码是utf8

1.当前的字符集编码是:

Server characterset: utf8

Db characterset: utf8
Client characterset: Latin1
Conn. characterset: Latin1
(1)下创建数据库

插入中文数据时,能够执行操作,但是显示的是乱码

(2)修改字符集编码,变成:

Server characterset: utf8

Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
插入中文数据时,能够执行操作,且数据显示正常

(3)修改字符集编码,变成:

Server characterset: utf8

Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
插入中文数据,操作不能执行,报错如:IIncorrect string value :'/xB9/xA4/Xbe/XDF'for colunmn'sort_name'at row 1
二。安装数据库时是Latin1

1.当前字符集编码:

Server characterset: Latin1

Db characterset: Latin1
Client characterset: Latin1
Conn. characterset: Latin1
(1)下创建数据库
插入中文数据时,能够执行操作,但是显示的是乱码
(2)修改字符集编码为utf8
Server characterset: Latin1
Db characterset: Latin1
Client characterset: utf8
Conn. characterset: utf8
插入中文数据,操作不能执行
(3)修改字符集编码为gbk
Server characterset: Latin1
Db characterset: Latin1
Client characterset: gbk
Conn. characterset: gbk
插入中文数据,操作不能执行
(4)在安装数据库时设定字符集编码为utf8,并把当前数据库的字符集编码也设为utf8
1)当前字符集编码为utf8:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
插入中文数据,操作不能执行
2)当前字符集编码为gbk:
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
插入中文数据,操作不能执行
3)当前字符集编码为Latin1:
Server characterset: utf8
Db characterset: utf8
Client characterset: Latin1
Conn. characterset: Latin1
插入中文数据时,能够执行操作,但是显示的是乱码
结论:当在安装mysql数据库时设定的字符集编码是Latin1,不支持中文,在这样的环境下创建的数据库,无论怎样修改字符集都不能正常插入中文数据。并且当把数据库移到安装数据库时就设定的字符集是utf8的数据库环境下,设置字符集为utf8或则gbk时,插入中文数据,操作直接就不能执行。

所以,想在数据库中插入中文数据,安装数据库时就必须设定字符集是支持中文的。

三。在安装数据库时就设定字符集编码为utf8的环境下
1.当前字符集编码为:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
下创建数据库
(1)插入中文数据,操作不能成功
(2)修改字符集编码为:
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
插入中文数据,显示正常
(3)安装数据库时就设定字符集编码为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
插入中文数据,操作不能执行
四。在安装数据库时就设定字符集编码为gbk的环境下
1.当前 字符集编码是:
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk

下创建数据
(1) 插入中文数据,操作能执行,并能正常显示
(2) 当前字符集编码为utf8
Server characterset: gbk
Db characterset: gbk
Client characterset: utf8
Conn. characterset: utf8
插入中文数据,操作不能执行

结论:要想能向数据库正常插入中文,必须满足以下条件:
<!--[if !supportLists]-->(1) <!--[endif]-->安装数据库时,要把字符集设定为能支持中文的gbk或则utf8
<!--[if !supportLists]-->(2) <!--[endif]-->把数据库的Client Characterset和Conn. Characterset的字符集都设定为gbk
其中,设定字符集编码的指令为:set names ‘charactername’
查看字符集编码的指令为:status
至于为什么吗要这样做,我也讲不出原因!

按理说,只要character_set_client、character_set_results、 character_set_connection的编码字符集的设置一样就行了,可为什么用SET NAMES 'charset_name'把他们设置为utf8就不能插入中文,而设置为gbk就能插入中文?
对于这个问题,我实在 搞不清楚,得去查些资料才行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐