关于mysql字符集的问题
时间:2011-06-13
来源:互联网
最近写一个小项目。需要用到mysql数据库。
但是字符集问题一直困扰。。
差了许多资料以后明白了很多。但是有个问题还是没弄清楚。
mysql字符集的乱码大约是因为数据库编码、连接编码、和客户端编码3个不统一造成的。
第一个问题是连接编码是负责什么工作的?
进行转码么?
第二个问题。和上个问题差不多。
我现在又一个utf-8的数据库。
然后我在cmd下。直接查询是乱码。插入会报错。
大约是因为cmd的默认编码为gbk。
解决方案是连接的时候设置连接字符集。
mysql-uroot -proot --default-character-set=gbk
这样查询和插入都正常了。但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
但是字符集问题一直困扰。。
差了许多资料以后明白了很多。但是有个问题还是没弄清楚。
mysql字符集的乱码大约是因为数据库编码、连接编码、和客户端编码3个不统一造成的。
第一个问题是连接编码是负责什么工作的?
进行转码么?
第二个问题。和上个问题差不多。
我现在又一个utf-8的数据库。
然后我在cmd下。直接查询是乱码。插入会报错。
大约是因为cmd的默认编码为gbk。
解决方案是连接的时候设置连接字符集。
mysql-uroot -proot --default-character-set=gbk
这样查询和插入都正常了。但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
作者: WADS913 发布时间: 2011-06-13
第一个问题是连接编码是负责什么工作的?
进行转码么?
是的,可以这么理解。
但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
不是,以字段上的字符集设置存储,但如你第一个问题,MYSQL会进行不同字符集间的转换
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
不是包含,是不同的两种字符集编码方案。 需要转码。
进行转码么?
是的,可以这么理解。
但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
不是,以字段上的字符集设置存储,但如你第一个问题,MYSQL会进行不同字符集间的转换
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
不是包含,是不同的两种字符集编码方案。 需要转码。
作者: ACMAIN_CHM 发布时间: 2011-06-13
引用 1 楼 acmain_chm 的回复:
第一个问题是连接编码是负责什么工作的?
进行转码么?
是的,可以这么理解。
但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
不是,以字段上的字符集设置存储,但如你第一个问题,MYSQL会进行不同字符集间的转换
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
不是包含,是不同的两种字符集编码方……
第一个问题是连接编码是负责什么工作的?
进行转码么?
是的,可以这么理解。
但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。
不是,以字段上的字符集设置存储,但如你第一个问题,MYSQL会进行不同字符集间的转换
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
不是包含,是不同的两种字符集编码方……
第二个问题中有点疑问。那连接的编码相当于只和客户端的编码有关系。
主要责任是把数据库的编码转换成连接的编码。但是插入的时候还是按照数据库本身的编码?
所以连接的字符集是需要根据客户端的编码进行设置
作者: WADS913 发布时间: 2011-06-13
客户端 字符集设置 , 你的客户端使用的是什么字符集,有些情况你是没的选的。比如WINDOWS下的DOS无法正常支持UTF8.
连接中的字符集设置, 同样,在某些情况下,连接中的字符集也会受到限制,当然现在这种情况不多。基本上都是用TCP通讯了。
字段的 字符集,这个是实际存储在表中的字符集。 (注意不存在什么 数据库本身的字符集。)
连接中的字符集设置, 同样,在某些情况下,连接中的字符集也会受到限制,当然现在这种情况不多。基本上都是用TCP通讯了。
字段的 字符集,这个是实际存储在表中的字符集。 (注意不存在什么 数据库本身的字符集。)
作者: ACMAIN_CHM 发布时间: 2011-06-13
引用 3 楼 acmain_chm 的回复:
客户端 字符集设置 , 你的客户端使用的是什么字符集,有些情况你是没的选的。比如WINDOWS下的DOS无法正常支持UTF8.
连接中的字符集设置, 同样,在某些情况下,连接中的字符集也会受到限制,当然现在这种情况不多。基本上都是用TCP通讯了。
字段的 字符集,这个是实际存储在表中的字符集。 (注意不存在什么 数据库本身的字符集。)
客户端 字符集设置 , 你的客户端使用的是什么字符集,有些情况你是没的选的。比如WINDOWS下的DOS无法正常支持UTF8.
连接中的字符集设置, 同样,在某些情况下,连接中的字符集也会受到限制,当然现在这种情况不多。基本上都是用TCP通讯了。
字段的 字符集,这个是实际存储在表中的字符集。 (注意不存在什么 数据库本身的字符集。)
我想问的问题是。
连接字符集所起的作用大约流程;
我想象中的流程是。查询时读出要查询的数据。然后经过连接的时候根据连接的字符集进行转码。然后显示在客户端。
插入的时候是不是也把要插入的语句转化成连接的编码。然后插入数据库中。
?
例如utf-8的字段(谢谢纠正)和gbk的cmd命令行
正常查询会是乱码。设置了连接字符集为gbk以后正常
所以
我查询的时候把utf-8的字段数据经过连接设置的gbk编码以后。转换成gbk编码显示在cmd的界面中。
但是我插入的时候为什么不是gbk的数据。经过连接设置的gbk编码以后以gbk编码的格式插入进去。
所以设置连接编码是不是仅仅针对客户端起作用的。而不是双向的?
作者: WADS913 发布时间: 2011-06-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28