我的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:
为什么我插入上面的一条数据时报错???
哪位前辈给解惑一下?
请大神们帮忙看一下这个问题啊!如真解决,感激涕零啊!!!
吧varchar(10)改成nvarchar(10)
mysql并没有sqlserver的nchar和nvarchar数据类型啊!
[client]和[mysqld]下面均加上default-character-set=utf8
按照你的方法依然不行,我的配置文件中已经设置了服务器端的默认字符集为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了。
每一步都很清晰,为什么插入的时候会出错???
@叶十一少: 重启了mysql服务吗
@Rich.T: 对啊!每次改配置文件,就要重启服务嘛!我自己搞定了,还是谢谢你了!
原来我的配置文件中设置mysql客户端默认字符集为utf8,那么‘中国’两字是utf8编码的,总共有6字节,
然后我又指定我的数据是gbk编码的,每个字符占2字节,这一步转换就会出现乱码情况!我想应该就是这个问题。
@叶十一少: 搞定了就好
自己解决了,好开心啊!
解决方案:
1、注释掉配置文件中default-character-set=utf8;
2、或将default-character-set=utf8修改为default-character-set=gbk。
完美搞定!!!