Mysql-Client编码问题
来源:互联网 发布:休斯顿国际电影节知乎 编辑:程序博客网 时间:2024/06/08 18:04
Mysql编码问题!
首先,安装完mysql之后,登录进去(从控制台),
先要查看mysql编码:SHOW VARIABLES LIKE 'char%';
(我这里是修改好的)
如果是没修改的,因为当初安装时指定了字符集为UTF8,所以所有的编码都是UTF8。
character_set_client:你发送的数据必须与client指定的编码一致!!!服务器会使用该编码来解读客户端发送过来的数据;
character_set_connection:通过该编码与client一致!该编码不会导致乱码!当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码。但只要客户端发送过来的数据与client指定的编码一致,那么转换就不会出现问题;
character_set_database:数据库默认编码,在创建数据库时,如果没有指定编码,那么默认使用database编码;
character_set_server:MySQL服务器默认编码;
character_set_results:响应的编码,即查询结果返回给客户端的编码。这说明客户端必须使用result指定的编码来解码;
修改character_set_client、character_set_results、character_set_connection为GBK,就不会出现乱码了。但其实只需要修改character_set_client和character_set_results。
控制台的编码只能是GBK,而不能修改为UTF8,这就出现一个问题。客户端发送的数据是GBK,而character_set_client为UTF8,这就说明客户端数据到了服务器端后一定会出现乱码。既然不能修改控制台的编码,那么只能修改character_set_client为GBK了。
服务器发送给客户端的数据编码为character_set_result,它如果是UTF8,那么控制台使用GBK解码也一定会出现乱码。因为无法修改控制台编码,所以只能把character_set_result修改为GBK。
修改character_set_client变量:set character_set_client=gbk;
修改character_set_results变量:set character_set_results=gbk;
设置编码只对当前连接有效,这说明每次登录MySQL提示符后都要去修改这两个编码,但可以通过修改配置文件来处理这一问题:配置文件就是my.ini;
这样,Mysql-Client的乱码问题就解决了。
建议使用MySQL工具,使用MySQL工具是不会出现乱码的,因为它们会每次连接时都修改character_set_client、character_set_results、character_set_connection的编码。这样把my.ini上的配置覆盖了,也就不会出现乱码了。
这里只是Mysql-Client端的乱码问题;其实在mysql的使用过程中,可能许多时候都会遇到乱码的问题,不过不要紧,只要仔细排查,确保2端编码一致,一般就不会有什么问题。
- Mysql-Client编码问题
- 关于MySql Client 乱码问题
- MySql的编码问题
- MySQL字符编码问题
- mysql中编码问题
- mysql 编码问题
- mysql中文编码问题
- MySQL数据库编码问题
- mysql编码问题
- MySql编码问题
- mysql编码设置问题
- 解决MYSQL编码问题
- 解决MYSQL编码问题
- MySQL 编码问题
- Mysql编码问题
- mysql中文编码问题
- MySQL编码问题
- mysql设置编码问题
- 浅析Fragment中startActivityForResult()与getActivity().startActivityForResult()的异同
- MCWebBridgeNative ,webview内容与本地交互,有非常非常爽的功能 (附 源码)
- RabbitMQ案例七之RPC远程过程调用
- 代理Hook
- React Native 中遇到的问题
- Mysql-Client编码问题
- PHP基础补全系列:异常处理
- httpClient 绕证书
- HTML初探
- 第一节 javascript的简史
- 初学构建小项目之仓库管理系统货物管理功能实现(四)
- 什么时候需要重写equals方法?为什么重写equals方法,一定要重写HashCode方法?
- 解决setConnectTimeout超时无响应
- 实时解析日志遇到的问题记录