首页 新闻 会员 周边 捐助

mysql插入时的字符集问题?

0
悬赏园豆:10 [已关闭问题] 关闭于 2016-03-22 16:33

我的mysql版本是免安装版的5.7.11。

我的my.ini配置文件如下:

[mysql]

#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#跳过密码问题,但是这并不能彻底解决,此语句可以忽略登录检查
#skip-grant-tables
#设置3306端口号
port=3306
#设置mysql的安装目录
basedir=D:\mysql\mysql-5.7.11-win32
#设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-5.7.11-win32\data
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

我的操作如下:

我的终端编码是GBK:

为什么我插入上面的一条数据时报错???

哪位前辈给解惑一下?

 

请大神们帮忙看一下这个问题啊!如真解决,感激涕零啊!!!

 

 

 

叶十一少的主页 叶十一少 | 初学一级 | 园豆:191
提问于:2016-03-22 11:40
< >
分享
所有回答(3)
0

吧varchar(10)改成nvarchar(10)

刘宏玺 | 园豆:14020 (专家六级) | 2016-03-22 13:01

mysql并没有sqlserver的nchar和nvarchar数据类型啊!

支持(0) 反对(0) 叶十一少 | 园豆:191 (初学一级) | 2016-03-22 13:10
0

[client]和[mysqld]下面均加上default-character-set=utf8

Rich.T | 园豆:3440 (老鸟四级) | 2016-03-22 13:21

按照你的方法依然不行,我的配置文件中已经设置了服务器端的默认字符集为utf8

character-set-server=utf8;

楼主你说的default-character-set = utf8(数据库或数据表的默认字符集)。

(为了与MySQL的早期版本保持兼容,这个字符集也可以用default-character-set选项给出;但这个选项已经显得有点过时了)。

 

 

 

set character_set_client=gbk;

我都已经告诉服务器我的数据是GBK编码的了。

而且我创建表的时候,表的默认字符集也指明了是utf8,告诉连接器帮我转成gbk(实际上根本没转,因为数据本来就是gbk编码的嘛!)

set character_set_connection=gbk;

然后连接器向服务器发送数据的时候,就会从gbk转成utf8了。

每一步都很清晰,为什么插入的时候会出错???

 

支持(0) 反对(0) 叶十一少 | 园豆:191 (初学一级) | 2016-03-22 16:03

@叶十一少: 重启了mysql服务吗

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2016-03-22 16:19

@Rich.T: 对啊!每次改配置文件,就要重启服务嘛!我自己搞定了,还是谢谢你了!

原来我的配置文件中设置mysql客户端默认字符集为utf8,那么‘中国’两字是utf8编码的,总共有6字节,

然后我又指定我的数据是gbk编码的,每个字符占2字节,这一步转换就会出现乱码情况!我想应该就是这个问题。

支持(0) 反对(0) 叶十一少 | 园豆:191 (初学一级) | 2016-03-22 16:30

@叶十一少: 搞定了就好

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2016-03-22 16:31
0

自己解决了,好开心啊!

解决方案:

1、注释掉配置文件中default-character-set=utf8;

2、或将default-character-set=utf8修改为default-character-set=gbk。

完美搞定!!!

叶十一少 | 园豆:191 (初学一级) | 2016-03-22 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册