Mysql的编码解决方案

来源:互联网 发布:大连交通大学网络平台 编辑:程序博客网 时间:2024/05/18 02:06

--查看数据库的字符集 

 

show variables like 'character\_set\_%'; 

 

这个图里面看到的是当前session状态的编码,不信加上--default charset参数连一下:)

 

--各个字段的详解:

character_set_client ,MySQL查询是用的什么字符集。 
character_set_connection ,MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。 
character_set_results ,   MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户。 

 

----其中,两点需要注意:

1、每个字段都是有默认值的。

2、--设置数据库字符编码 ,set names 'GBK' 一次性修改3个字段,

或者set character_set_connection=gbk; 一个个字段的改。 ~~~这种方式只对当前session有效

 

        如果需要修改全局配置,那么可以考虑修改mysql配置文件,或者set GLOBAL xxx


---在使用DB连接地址的时候,最好显示的带上期望的connection编码, 如下:
jdbc:mysql://17。1.1.1/xyyi?useUnicode=true&characterEncoding=utf8
 


ps。。=================================================
这次碰到的乱码问题其实跟mysql无关,只是恰好排查到这里,绕了一圈弯路就写文记录下来。。。

真正的问题其实是:
1.tomcat的server.xml中,Connector 属性中配置了 URIEncoding="GBK"
2.项目中使用的URIencoding,是apache.httpclient中的函数URIUtil.encodeWithinQuery(text);其编码方式由当前protocol协议指定的编码格式决定。:
Escape and encode a string regarded as within the query component of an URI with the default protocol charset
3.虽然在页面上指定了UTF-8的编码方式,但还是会被步骤1中的tomcat设置所覆盖。
原创粉丝点击