在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. QT Creator 代码自动补全快捷键设置

    在QT Creater界面点Tools再进Options...(找到environment->Keyboard)在里面找到FakeVim目录下的,发现默认快捷键就是CTRL+SPACE,把它删除 ...

  2. selenium python 环境搭建(64位 windows)

    之前写了同样的文章,可是后来自己按照给文章再次搭建环境当搭建环境成功后却发现还是无法用.使用from selenium import webdriver,在run的时候却出现ImportError: ...

  3. java中关于json传图片的方法

    一般来说传图片可以以流的形式来传输,即便是用json传输,一般也都是传一个地址,而图片都存在服务器上,然后顺着地址发送请求下载图片. 但是这次公司的项目中,图片是存在oracle数据库中的blob字段 ...

  4. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  5. Halcon C++混合编程学习之Qt 实现检测焊接点

    1 # include "HalconCpp.h" # include "HDevThread.h" # include <X11/Xlib.h> ...

  6. 高效Count

    SQL Server快速查询某张表的当前行数   传统做法可能是select count(1) 但是往往会比较慢.推荐如下做法: SELECT ISNULL(MAX(rowcnt), 0) Curre ...

  7. logstash jdbc 各种数据库配置

    MySQL数据库 Driver ="path/to/jdbc-drivers/mysql-connector-java-5.1.35-bin.jar"   //驱动程序Class ...

  8. Tire树

    Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种. 典型应用是用于统计和排序大量的字符串(但不仅限于字符串), 所以经常被搜索引擎系统用于文本词频统计. 字典树(Trie)可以保存 ...

  9. 2012蓝桥杯C组本科决赛答案

    题目: 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为:A.G.C.T. ...

  10. Mirco2440核心板设计思考

    1.核心板架构 注意的是:此处的RAM和ROM都是外置的 硬件框架 S3C2440+ SDRAM + NAND Flash + NOR Flash 也就是 CPU + RAM + ROM 2.S3C2 ...