MySQL基础教程14-Mysql插入中文数据报错的原因和解决办法
来源:互联网 发布:配乐朗诵录音软件 编辑:程序博客网 时间:2024/06/05 16:18
有时候,我们用中文系统连接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;这个语句。
- MySQL基础教程14-Mysql插入中文数据报错的原因和解决办法
- MySQL 插入大量数据报错 解决办法
- mysql插入中文报错
- Mysql插入中文报错
- mysql插入中文报错
- MySQL插入数据报#1406的错
- mysql CMD命令行插入中文数据报错ERROR 1366
- mysql中文乱码产生原因和解决办法
- mysql中文乱码产生原因和解决办法
- mysql保存中文乱码的原因和解决办法
- mysql保存中文乱码的原因和解决办法
- mysql保存中文乱码的原因和解决办法
- mysql保存中文乱码的原因和解决办法
- 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错的原因
- mysql中的唯一键索引,插入重复数据直接报错的解决办法
- 解决用django创建网站时mysql插入中文数据报错的问题
- mysql插入数据量过大报错解决办法
- mysql不能插入中文的解决办法
- 在Ubuntu系统、GPU模式下运行Fast R-cnn代码
- Codeforces Round #452 (Div. 2)
- LC- Island Perimeter
- IT行业风险投资
- 学习笔记13
- MySQL基础教程14-Mysql插入中文数据报错的原因和解决办法
- 10019---SpringBoot简介
- IM即时聊天室(二): Socket.io + Node.js
- glance获取镜像图解
- JVM类与类加载器
- Java中的SPI(Service Provider Interface)介绍及示例
- Android用MediaPlay方法实现本地音乐的播放,与进度条的实现
- Python3与OpenCV3.3 图像处理(二十一)--轮廓发现
- Spring第一天