在JAVA WEB开发的过程中,经常会遇到中文乱码的情况,中文乱码主要是在浏览器与服务器交互传递数据的时候发生的。对于这个棘手的问题,我参考(韩顺平老师)视频将处理方法总结与此,供自己以及大家开发的时候借鉴。

一、发生中文乱码的三种情况

(1)表单提交(form),其中又分为两种情况,post提交和get提交;

(2)超链接传递参数,例如:www.cnblogs.com?postid=1234567;

(3)sendRedirect()方法,重定向url带有参数的时候。

二、乱码原因及处理方法

(1)表单post提交乱码

原因:web服务器默认采用的是ISO-8859-1的编码方式解析post数据,所以乱码出现是由于浏览器所传递数据编码方式与服务器接收编码方式不一致。

处理方案:在servlet或jsp中加上 request.setCharacterEncoding("utf-8"); 这里假定浏览器所显示数据的编码格式是utf-8。

(2)表单get提交乱码

原因:同上一样,由于get提交的数据没有放在请求体内,而是放在请求行中,所以使用上面的方式不能解决

处理方案:编写一个转码工具类,如下

1 public classCodingTool {2 public staticString transcoding(String str) {3 try{4 return new String (str.getBytes("iso-8859-1"),"utf-8");5 } catch(UnsupportedEncodingException e) {6 e.printStackTrace();7 return null;8 }9 }10 }

(3)超链接传参乱码情况和get提交乱码原因及解决方案都一样

(4)sendRedirect()方法提交Url中参数出现乱码

原因:sendRedirect()方法重定向时会先回到浏览器,再由浏览器向下一个servlet发送http请求,在第二次请求的servlet中根据post请求或get请求方式进行处理。

三、特殊情况

当客户端浏览器是ie6或以下版本的时候,使用超链接和sendRedirect()传参这两种情况任然会出现乱码(当中文是奇数的时候),解决方案有两种:

(1)全面换成GBK编码,在servlet中这样进行接收:

String username = new String (request.getParameter("username").getBytes("iso-8859-1"), "gbk")

(2)仍然使用utf-8编码,就需要对要发送的中文进行URLEncoding

在发送信息的servlet中,对含有中文的URI进行如下转码操作:

String info = java.net.URLEncoder.encode("图片.jpg", "utf-8");

然后使用超链接将info转发出去

response.getWriter().println("test");

或sendRedirect()方法:

response.sendRedirect("/EncodingPro/Test1?imageName=" + info );

接收方:

String info = new String (request.getParameter("imageName").getBytes("iso-8859-1"), "utf-8");

j2ee与mysql乱码过滤_J2EE中文乱码处理相关推荐

  1. 《1---关于解决MySQL在控制台插入中文乱码问题》

    <1---关于解决MySQL在控制台插入中文乱码问题> 参考文章: (1)<1---关于解决MySQL在控制台插入中文乱码问题> (2)https://www.cnblogs. ...

  2. php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结

    PHP+MySQL存储数据常见中文乱码问题小结 本文实例总结了PHP+MySQL存储数据常见中文乱码问题.分享给大家供大家参考,具体如下: PHP+MySQL出现中文乱码的常见原因: 1. MYSQL ...

  3. 解决openfire在使用MySQL数据库后的中文乱码问题(转)

    openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等. 在实际使用时大家遇到最多的就是采用MySQL数据库 ...

  4. MySQL命令窗口出现中文乱码的解决方法

    MySQL命令窗口出现中文乱码的解决方法 参考文章: (1)MySQL命令窗口出现中文乱码的解决方法 (2)https://www.cnblogs.com/ttxcs/p/11614289.html ...

  5. MYSQL查询后出现中文乱码怎么办

    MYSQL 查询后出现中文乱码 解决方案:输入set names gb2312 后回车 然后再次查询

  6. MySQL导入sql脚本中文乱码设置和常用命令

    MySQL导入sql脚本中文乱码设置和常用命令 1. use database_name;  2. set names utf8; (或其他需要的编码)  3. source example.sql ...

  7. jmeter对乱码如何处理_JMeter中文乱码的解决

    对于JMeter中文乱码分为两部分: 1.请求(request):由于引用了csv文件当csv文件编码与JMeter不统一可能造成服务器收到数据的中文乱码 2.返回(response):由于服务器返回 ...

  8. 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法

    核心提示:最近好多网友反映在使用火狐浏览器的时候,网页显示乱码的情况,这种问题通常是由于我们浏览器语言的设置有关系,下面小编就为大家分析下具体的解决办法,希望对大家有所帮助. 火狐浏览器中文乱码怎么办 ...

  9. tomcat8日志乱码_Tomcat日志中文乱码怎么解决?

    Linux系统中文语言乱码,是很多小伙伴在开始接触Linux时经常遇到的问题,而且当我们将已在Wndows部署好的项目搬到Linux上运行时,Tomcat的输出日志中文全为乱码(在Windows上正常 ...

最新文章

  1. 3a三次方h c语言表达式,希尔伯特曲线——第八届蓝桥杯C语言B组(国赛)第三题...
  2. Nginx的配置文件
  3. https nginx phpstudy_让phpStudy2018 Nginx 支持WordPress自定义链接
  4. mysql 网站 数据库_mysql系统数据库
  5. 【JFreeChart】JFreeChart—输出组合图表
  6. 【渝粤题库】广东开放大学 面向对象方法精粹 形成性考核
  7. 图像傅里叶变换频谱分析
  8. 计算机专业必备电子书单
  9. 解决Windows和Ubuntu时间不一致的问题
  10. “云”起风涌,邮件服务器助航企业云端升级
  11. BGP联邦原理及配置实例
  12. mac 安装 cocoapods
  13. android 打开微信客户端,Android中接入微信客户端心得
  14. 强制跳过WM调整屏幕的方法
  15. 没有乌云,天就一定晴了么
  16. 搭建文华财经博易大师信管家多国语言IQ Option二元期权源码
  17. 学了这么久python,不会连自己啥python版本都不知道吧?
  18. 超零协议(SERO)轻松入门——基于CENTOS7
  19. 计算机学院毕业礼物,“风里雨里,我们在这里等你“计算机学院举行毕业礼物赠予仪式...
  20. 3000字长文为你解读数据仓库与复杂业务数据建模全流程

热门文章

  1. 5.4监听socket
  2. t–sql pl–sql_SQL Server处理器性能指标–第4部分–处理器指标有助于更深入的调查和故障排除
  3. sql关于视图的sql_学习SQL:SQL视图
  4. xpath下面的xpath_深入研究XPATH查询
  5. 在单用户模式下启动SQL Server的不同方法
  6. sql数据库备份默认路径_在Linux上SQL Server中更改默认数据库文件和备份路径
  7. 【XSY2307】树的难题
  8. SQL索引碎片整理脚本
  9. 23、jQuery九类选择器/jQuery常用Method-API/jQuery常用Event-API
  10. Swift 2.2 最基本的多线程