J2EE中文乱码处理
在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中文乱码处理的更多相关文章
- j2ee、mvn、eclipse、Tomcat等中文乱码问题解决方法
一.更改jdk默认编码为UTF-8,保证启动的JVM不会出现中文乱码问题 1.在编译的时候,如果我们没有用 -encoding 参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们 ...
- Oracle数据库中文乱码问题
最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle ...
- 中文乱码的分析 和 从Eclipse设置启动JVM时的字符集(转)
最近时常碰到中文乱码的问题,eclipse的编码环境设置的都是UTF-8,外部也是以UTF-8的编码进行传参的,但是遇到中文的时候还是因为乱码而产生一系列的错误.在网上查了许多资料,发现这是跟JVM的 ...
- redhat6.3 jfreechar中文乱码解决途径
最近使用到jfreechar的项目,在转移到linux上面时出现中文乱码(中文被显示为框框),网上查了一些资料,结合自身系统的特性,总结了一种安装字体的方式.在说字体安装之前首先上个测试的代码吧:we ...
- jsp中文乱码解决办法
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供 ...
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
随机推荐
- Java对象的序列化和反序列化[转]
Java基础学习总结--Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用 ...
- linux:ifconfig命令
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- html笔记02:html,body { ……}
html,body { margin:0px; height:100%; } html元素可告知浏览器其自身是一个 HTML 文档.body 元素定义文档的主体.它包含文档的所有内容(比如文本.图像. ...
- linux- svn服务器
环境:centos6.5 安装 centos 6.5默认安装了svn server, 这里直接使用.如果没有的话,使用yum -y install subversion安装 创建版本库 3.1 创建s ...
- VMware系统运维(三 )SQL Server 2008 R2安装
1. 点击"全新SQL Server 独立安装或向现有安装添加功能" 2.验证通过,点击确定. 3.输入数据库密钥,必须支持正版,不然微软打你屁屁,嘻嘻 4.不接受不让你过,所以不 ...
- [改善Java代码]警惕数组的浅拷贝
建议62:警惕数组的浅拷贝 一.分析 在日常工作中,我们会遇见很多数组的拷贝和复制的问题,但是在你使用系统提供的API进行编码的时候,无形中会留下浅拷贝的隐患. 二.场景 有这样一个例子,第一个箱 ...
- android代码片段一
1.Android判断是Pad或者手机 public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManager ...
- React Native 实现MQTT 推送调研 (1)
一.推送几种实现方式: (1)通过SMS(Short Message Service,短信群发服务系统) 进行服务器端和客户端的交流通信.在Android平台上,可以通过拦截SMS消息并解析内容来了解 ...
- Asp_CRUD
Asp_增删改查.逻辑流程 启动服务器. 地址为127.0.0.1 端口为随机分配 2607 然后在浏览器中输入http://localhost:2670/CRUD_main.ashx 浏览器像服务器 ...
- sql常识-IN 操作符
IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...