Tomcat+mysql字符集问题

Tomact设置字符集,在Tomcat家目录下的conf中的server.xml配置文件,在配置端口的选项中设置字符集:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

其中,8080端口为可以访问应用的端口,connectionTimeout为连接超时时间, URIEncoding="UTF-8",设置字符集为utf-8,useBodyEncodingForURI="true"表示请求参数的编码方式要使用请求体的编码方式。

开启应用,访问并登录应用之后之后,发现出现字符乱码问题,排查可能是数据库问题,进入数据库mysql,查看字符集:

show variables like '%char%';

163433_nSsv_3703522.jpg

可以看到,红色框内的character_set_database字符集为utf8的,但是访问应用时仍然出现乱码问题, 查看其他设置,黄色框内的字符集为Latin1,这是数据库初始配置,这里不设置也可能出现乱码问题。

character_set_client 、character_set_connection、character_set_results 这三个设置是客户端每次连接进来设置的。登录mysql之后,命令:SET names utf8; 就相当于设置了此三个选项,也可以分别设置:

SET character_set_client = utf8;

SET character_set_connection = utf8;

SET character_set_results = utf8;

退出mysql连接之后,重新启动应用服务,登录应用,查看字符集。

备注:三个选项字符集是需要远程连接mysql的客户端进行设置的,详解,

 character_set_client :发送的数据必须与client指定的编码相同,服务器会使用该编码来解读客户端发送过来的数据;

character_set_connection:通过此设置与client相同,该编码不会导致乱码,当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码,只要客户端发送过来的数据与client指定的编码一致,就不会出现问题;

character_set_results :响应的编码,即查询结果返回给客户端的编码,说明客户端必须使用result指定的编码来解码。

客户端远程连接mysql默认是拉丁字符集,但是执行的数据库文件指定字符集为utf8的,所以在执行之后,访问应用会出现乱码问题。

Linux下远程mysql,最好指定字符集,不然会出现乱码问题:

mysql -h <mysql_ip>:<port> -u <user_name> -p <password> --default-character-set=utf8

 

转载于:https://my.oschina.net/u/3703522/blog/1594659

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值