在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提交的数据没有放在请求体内,而是放在请求行中,所以使用上面的方式不能解决

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

 public class CodingTool {
public static String transcoding(String str) {
try {
return new String (str.getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
}

    (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("<a href='/EncodingPro/Test1?imageName=" + info +"'>test</a>");

        或sendRedirect()方法:

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

      接收方:

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

      

J2EE中文乱码处理的更多相关文章

  1. j2ee、mvn、eclipse、Tomcat等中文乱码问题解决方法

    一.更改jdk默认编码为UTF-8,保证启动的JVM不会出现中文乱码问题 1.在编译的时候,如果我们没有用 -encoding 参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们 ...

  2. Oracle数据库中文乱码问题

    最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle ...

  3. 中文乱码的分析 和 从Eclipse设置启动JVM时的字符集(转)

    最近时常碰到中文乱码的问题,eclipse的编码环境设置的都是UTF-8,外部也是以UTF-8的编码进行传参的,但是遇到中文的时候还是因为乱码而产生一系列的错误.在网上查了许多资料,发现这是跟JVM的 ...

  4. redhat6.3 jfreechar中文乱码解决途径

    最近使用到jfreechar的项目,在转移到linux上面时出现中文乱码(中文被显示为框框),网上查了一些资料,结合自身系统的特性,总结了一种安装字体的方式.在说字体安装之前首先上个测试的代码吧:we ...

  5. jsp中文乱码解决办法

    一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供 ...

  6. java中文乱码解决之道(一)-----认识字符集

    沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...

  7. MAC下 mysql不能插入中文和中文乱码的问题总结

    MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...

  8. java中文乱码解决之道(九)-----总结

    乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...

  9. 解决springmvc+mybatis+mysql中文乱码问题【转】

    这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...

随机推荐

  1. CSS拾遗+技巧集合

    1.实现尖角符号. 这是内联inline-block标签独有的特性. <!DOCTYPE html> <html lang="en"> <head&g ...

  2. [Android]Log打印

    package com.lurencun.android.system; import android.util.Log; public class ExLog { static final Stri ...

  3. IC卡写卡操作流程

    var icData = new ICData(); var deviceResult = crd.CRDICPowerOn(); if (!deviceResult.IsSuccess) retur ...

  4. 伸展树 Splay Tree

    Splay Tree 是二叉查找树的一种,它与平衡二叉树.红黑树不同的是,Splay Tree从不强制地保持自身的平衡,每当查找到某个节点n的时候,在返回节点n的同时,Splay Tree会将节点n旋 ...

  5. ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法

    ListView使用的是自定义适配器,列表项的布局文件中含有文本和图标,实现文本区域和图标区域的点击事件. 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,分别设置文 ...

  6. 写css动画

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  7. 锋利的jQuery第2版学习笔记1~3章

    第1章,认识jQuery 注意:使用的jQuery版本为1.7.1 目前流行的JavaScript库 Prototype(http://www.prototypejs.org),成型早,面向对象的思想 ...

  8. Springmvc+uploadify实现文件带进度条批量上传

    网上看了很多关于文件上传的帖子,众口不一,感觉有点乱,最近正好公司的项目里用到JQuery的uploadify控件做文件上传,所以整理下头绪,搞篇文档出来,供亲们分享. Uploadify控件的主要优 ...

  9. Ajax概述

  10. 升级NppAstyle中的AstyleLib为最高版本

    注:本文撰写时,NppAstyle的最高版本为0.10.02.14(更新于2013-04-08),Astyle的最高版本为2.05.1(更新于2014-12-11). Astyle是一个很好的代码格式 ...