MySQL基础教程14-Mysql插入中文数据报错的原因和解决办法

       有时候,我们用中文系统连接mysql数据库时候,插入或者更新的数据是中文的时候,可能会出现报错,这篇就来分析下为什么有这个报错。

我们来新增一个中文数据,结果遇到了报错。

问题分析

报错提示:不正确的字符值

原因:

      上面报错的\xDD\xFE这六个是十六进制的表示,我们知道计算机只识别二进制的数据,但是人类能识别很多符号,所以我们需要把符号都想办法给转换成二进制。不同国家的文字符号都可能不同,最早是美国的ASSIC的字符编码,只包含128个字符。后来出现了GBK,GB18030和UTF8等各种字符集。GBK默认是一个汉字用两个字节来存储,而UTF8默认是一个字符用三个字节来存储。Mysql服务器端默认字符集是UTF8,会把三个十六进制的字符当做一个汉字读取,所以才有这种错误出现。


如何查看系统默认的编码格式

 

       如果你是安装的中文的系统,那么你默认的字符集是GBK,在cmd窗口,点击左上角那个菜单,然后点击属性,就可以看到如下图,显示字符集是GBK。


那么如何查看mysql服务器的到底识别哪些字符集。


一共支持39中字符集,上面截图ascii,gb2312和uft8我们应该知道或者听说过。


知道了mysql服务器支持39中字符集,那么默认的字符集是什么,通过以下命令查看。


       排在第一位就是utf8字符集,这个就是为什么我们文章开头那个报错,我们本地是采用GBK字符集,但是mysql默认用utf8去解析字符,当然会解析失败。

如何解决插入中文报错或者警告的问题


然后插入中文数据之后,查询表发现还是有乱码,如何办呢?

       这里报乱码的原因是因为数据来源服务器,服务器还是采用utf8的字符集,而我们客户端还是GBK,也就是客户端只能识别GBK,解决方案:修改服务器给客户端的字符集为GBK。


       到这里,如果你查询发现数据显示正常没有乱码,那么是不是就完了呢?这种设置方式只能当前会话生效,下次打开连接mysql还是会显示乱码,那么怎么办呢,有没有一劳永逸的办法呢?利用一个快捷方式:set names gbk;

关于中文报错和乱码分析就到这里,需要掌握set names gbk;这个语句。



  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值