mysql_query('set names utf8')解决浏览器或者数据库中文乱码的问题?
2014-02-22 11:27
435 查看
在mysql数据库中有3个变量:
character_set_client
character_set_connection
character_set_results
你可以分别理解为:客户端 连接器 返回值
客户端 :通常有cmd下的命令行,或者浏览器
连接器 :这个比较抽象,我们看不到,应该是在mysql数据库中的
返回值 : 就是以什么样的字符编码来给客户端
我们一般在cmd下set names gbk 或者php文件中 mysql_query('set names utf8'),其实就是相当于同时设置上面所说的3个变量的值为 gbk 或者 utf8 ,也就是客户端、连接器、返回值都为一样的字符编码,如果你足够耐心也可以再mysql命令行下分别设置这3个变量的值,比如:
set character_set_client =gbk;
set character_set_connection = gbk;
set character_set_results = gbk;
按照你说的 数据库已经设置了utf-8 ,php文件也设置了utf-8 ,而且在添加了 set names utf8 就不乱吗了,你应该是用浏览器查看的吧?这么说你的浏览器应该是urf8字符集了,那么问题应该就是出在 连接器 这个环节上。字符集设置有个限制,那就是字符集编码的大小,应该是这个规律: 客户端 <= 连接器 <= 服务端
那么我在说下连接器的作用,连接器就是接受客户端传来的数据,先接受保存起来,在转换成服务端所需的字符编码。比如客户端是GBK ,连接器也是GBK,服务端是UTF8,那么 连接器就会把客户端传来的GBK数据先存储起来,转换成服务器的UTF8后传给服务器。
那么回到字符集设置规律上,GBK存储汉字需要2个字节,UFT8存储汉字需要3个字节 ,如果你的客户端是UTF8,而连接器是GBK,那么就会在存储上出现问题,所以存入数据库后就会乱码。
不知道这个解释是否是你需要,你对问题的描述不是很清晰,我很难理解你要表达的问题。
另外你是否进行了insert 操作,使用的 浏览器 还是 cmd 下命令行进行的?还有你查看是通过浏览器直接查看php生成的结果还是通过phpmyadmin还是cmd下的命令行查看数据库?这么你都没说清楚。
http://tieba.baidu.com/p/1895070717
character_set_client
character_set_connection
character_set_results
你可以分别理解为:客户端 连接器 返回值
客户端 :通常有cmd下的命令行,或者浏览器
连接器 :这个比较抽象,我们看不到,应该是在mysql数据库中的
返回值 : 就是以什么样的字符编码来给客户端
我们一般在cmd下set names gbk 或者php文件中 mysql_query('set names utf8'),其实就是相当于同时设置上面所说的3个变量的值为 gbk 或者 utf8 ,也就是客户端、连接器、返回值都为一样的字符编码,如果你足够耐心也可以再mysql命令行下分别设置这3个变量的值,比如:
set character_set_client =gbk;
set character_set_connection = gbk;
set character_set_results = gbk;
按照你说的 数据库已经设置了utf-8 ,php文件也设置了utf-8 ,而且在添加了 set names utf8 就不乱吗了,你应该是用浏览器查看的吧?这么说你的浏览器应该是urf8字符集了,那么问题应该就是出在 连接器 这个环节上。字符集设置有个限制,那就是字符集编码的大小,应该是这个规律: 客户端 <= 连接器 <= 服务端
那么我在说下连接器的作用,连接器就是接受客户端传来的数据,先接受保存起来,在转换成服务端所需的字符编码。比如客户端是GBK ,连接器也是GBK,服务端是UTF8,那么 连接器就会把客户端传来的GBK数据先存储起来,转换成服务器的UTF8后传给服务器。
那么回到字符集设置规律上,GBK存储汉字需要2个字节,UFT8存储汉字需要3个字节 ,如果你的客户端是UTF8,而连接器是GBK,那么就会在存储上出现问题,所以存入数据库后就会乱码。
不知道这个解释是否是你需要,你对问题的描述不是很清晰,我很难理解你要表达的问题。
另外你是否进行了insert 操作,使用的 浏览器 还是 cmd 下命令行进行的?还有你查看是通过浏览器直接查看php生成的结果还是通过phpmyadmin还是cmd下的命令行查看数据库?这么你都没说清楚。
http://tieba.baidu.com/p/1895070717
相关文章推荐
- 设置MySql5.5数据库的字符编码为UTF8,解决中文乱码问题
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- Mysql 5 数据库 中文乱码问题的解决
- 【MySQL学习笔记】4:解决JDBC连接MySQL的query结果中文乱码问题
- mysql_query中文乱码问题解决
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- 中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总
- 设置MySql5.5数据库的字符编码为UTF8,解决中文乱码问题
- wamp数据库mysql解决中文乱码问题方法
- 解决mysql+hibernate在j2ee框架下的数据库中文乱码问题
- set names utf8 【mysql导入中文乱码问题解决】
- 解决asp.net 用 mySql 数据库 添加数据时中文为乱码问题
- 设置MySql5.5数据库的字符编码,解决中文乱码问题
- django 解决 mysql 数据库输入中文乱码问题
- 解决使用cmd或powershell进行数据库(MySQL,SQLite3...)查询时中文乱码的问题
- mysql_query设置字符集为utf8,解决中文乱码的问题
- 解决mysql和可视化工具Navicat与web应用中数据库传输中文乱码问题
- mysql 在用source导入数据库时中文乱码问题的解决
- 设置MySql5.5数据库的字符编码为UTF8,解决中文乱码问题
- 解决数据库导入mysql时中文乱码问题