mysql proxy 乱码_mysql中文乱码诊断及解决-这些年我踩过的坑

mysql中文乱码相信是每一名java web码农抓耳挠腮又痛心疾首的问题,有病乱投医,一通搜索,照着网上方法一个又一个的做,“怎么还是特么不行?!!”。

实际上从表面现象看,网上的问题和你的问题都是中文出现了乱码,但病源出在哪,却各不相同。Ok,别慌张,沉下来心跟我一步步诊断病因,并彻底根除。

声明:本文旨在帮助大家找出乱码的原因和解决办法,具体操作自行百度google。

大原则:数据库、表和字段、页面三者的字符集要统一!

首先,(打断点或者打印一下)查看从dao层取出的数据是否已经乱码

若已出现乱码,那问题出现在数据库编码数据库连接表和字段的字符集上。

检查数据库编码

mysql默认编码为latin1,不支持中文。所以需要将数据库编码手动修改为gb2312,gbk或utf-8。个人建议使用utf-8,原因是支持繁体中文和一些特殊符号。

命令:

查看数据库编码:

show variables like 'character%';

变量说明:

character_set_client为客户端编码方式;

character_set_connection为建立连接使用的编码;

character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

搜索tip:查看修改mysql编码方式

如果需要建新数据库,一定要注意指定编码。

命令:

CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

但有人说重启服务器服务后会失效,所以要通过my.ini配置来永久设置。不过本人还没验证过,欢迎指教。

检查数据库连接设置

这里手动查看吧,设置方式取决于你的数据库连接配置获取方式。

如果是写在基于xml的配置文件里(如使用Tomcat连接池的context.xml,Hibernate的hibernate.cfg.xml,或iBATIS的sqlMapConfig.xml):

f71112905d4b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

基本xml的连接配置.png

注意二者不同:代码里参数的连接用&,而xml里参数的连接用& amp;(5个字符,(&、a、m、p、;)中间没有空格。

检查表和字段的字符集

表一般不需要格外关注。

字段的话,如果是char或varchar指定字符为utf8。

搜索tip:mysql查看修改字段字符集

若没出现乱码,那问题便出在前端页面。

若问题出现在前端页面,那情况可能会很复杂,但幸好最常见的情况就这几种:

若为静态页面

中加入以下meta,指定字符格式就好了。

若为动态页面

在jsp最顶端设置字符格式

究极万能百分之一百万有效

浏览器的编码格式设为utf-8,啊,有没有觉得自己傻*了?

搜索tip:jsp页面中文乱码

结束语

你的病,好了吗?

我是惊蛰,立志从搬砖的码农成长为优秀的程序员.

QQ:623001594

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值