JavaWeb中文乱码问题解决思路
1、提交页面请求或者服务器端的响应时,需要确保页面编码当时与服务器编码方式是否一致。
2、对于从服务器写入数据库中的数据和从数据库中读取到服务器中的数据,需要确保服务器编码方式与数据库编码方式是否一致。
遇到乱码问题一般解决步骤,以UTF-8为例,
- 首先浏览器编码方式是否为UTF-8(例如jsp页面本身是否设置pageEncoding="UTF-8",contentType="text/html; charset=UTF-8"是设置服务器发送给客户端时的内容编码,meta中的charset=utf8客户端的浏览器用utf-8字符集编码显示该页面,)
- 紧接着看服务器本身编码是否为UTF-8(例如eclipse中server的编码是否为UTF-8)
- 最后查看数据库编码方式是否为UTF-8(例如安装mysql时使用默认编码方式Latin1)
常见中文乱码现象以及解决方法:
1、背景:浏览器的页面使用的是UTF-8,服务器使用的编码方式是GBK,但是在web.xml中使用struts2中StrutsPrepareAndExecuteFilter过滤器,设置初始参数encoding为UTF-8
出现乱码的情况:对于从浏览器中传入服务器的请求,虽然服务器编码与浏览器编码方式不一样,但是不会出现乱码现象。但是,如果这是服务器的响应中包含中文字符,这是用的服务器默认的编码方式GBK,这时传到服务器时就会出现乱码现象。
解决方法:设置eclipse中的Servers的Properties中的TEXT file encoding为UTF-8.
2、背景:浏览器的页面使用的是UTF-8,服务器使用的编码方式是UTF-8,数据库使用MySQL默认安装
出现乱码的情况:存入中文数据时候,出现乱码
出现乱码原因:数据库使用mysql默认的Latin1,这时存入中文数据时候会出现乱码
解决方法:运行MySQL安装目录下bin目录中的MySQLInstanceConfig.exe,重新设置数据库的编码方式。
注:以上纯属个人项目中遇到的乱码问题经验总结,如有其他中文乱码问题,欢迎一起讨论。持续更新