最近写一个小项目。需要用到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是否存在包含关系?或者说是否不需要转码。?
解决方案 »
- 如何写mysql存储引擎,帮忙推荐个学习网站?
- 关于索引
- CentOS中MySQL数据库里默认的mysql库不见了
- 【Mysql 行变列问题 】 如何输出学生成绩到一行记录中去
- 在MYSQL 中,如何判断一个varchar字段内容的长度。比如sqlserver中的len(字段名)?
- 請教Postgresql使用check檢查唯一性,請大家幫幫忙
- MYSQL FRONT 2.5不支持定义外键,还有没有更好的front??
- Mysql 语法和SQL语法有很大的区别吗?为什么这条在它上面执行不了?
- 请问怎么在Java里获得MySQL的所有表???
- 在windows2008中安装的应用程序,使用了mysqlpp.dll 文件不能正常启动?
- 如何在mysql同一用户的两个数据库之间移动表
- mysql 修改配置和密码时,Apply security settings总报Error:1045
进行转码么?是的,可以这么理解。
但是我想知道我插入的数据时什么编码的?
是不是以gbk插入然后以gbk解析所以没有乱码。不是,以字段上的字符集设置存储,但如你第一个问题,MYSQL会进行不同字符集间的转换
第三个问题。gbk和utf-8是否存在包含关系?或者说是否不需要转码。?
不是包含,是不同的两种字符集编码方案。 需要转码。
我想问的问题是。
连接字符集所起的作用大约流程;
我想象中的流程是。查询时读出要查询的数据。然后经过连接的时候根据连接的字符集进行转码。然后显示在客户端。
插入的时候是不是也把要插入的语句转化成连接的编码。然后插入数据库中。
?
例如utf-8的字段(谢谢纠正)和gbk的cmd命令行
正常查询会是乱码。设置了连接字符集为gbk以后正常
所以
我查询的时候把utf-8的字段数据经过连接设置的gbk编码以后。转换成gbk编码显示在cmd的界面中。但是我插入的时候为什么不是gbk的数据。经过连接设置的gbk编码以后以gbk编码的格式插入进去。
所以设置连接编码是不是仅仅针对客户端起作用的。而不是双向的?
当我有一个包含中文sql语句 比如select * from tbl_news where title like '%中文%'
在cmd下(gbk)编码。并且设置了连接编码为gbk的情况下。当sql语句到数据库时候,sql语句应是character_set_connection的字符集gbk了吧?那么查询怎么能查询的出来呢?
MySQL 中文显示乱码