java中解决request中文乱码问题
request乱码问题(当我们提交的数据中含有中文信息时),分两种情况:
- 通过post方式提交数据给Servlet
Servlet服务端部分代码:
public void doPost(httpServletRequest request, httpServletResponse response)
throws ServletException, IOException{
//在获取用户表单信息之前把request的码表设置成UTF-8,
//如果没这句的话,如果提交中文信息的时候,会乱码。
request.setCharacterEncoding("UTF-8");
String value = request.getParameter("username"); //从request中获取客户端提交过来的信息
System.out.println(value);
}
- 通过get方式提交数据给Servlet (要手动处理)
Servlet服务端部分代码:
public void doGet(httpServletRequest request, httpServletResponse response)
throws ServletException, IOException{
//从request中获取客户端提交过来的中文信息,获取到乱码
String value = request.getParameter("username");
//拿到乱码反向查找 iso-8859-1 码表,获取原始数据,
//在构造一个字符串让它去查找UTF-8 码表,已得到正常数据
value1 = new String (value.getBytes("iso-8859-1"), "UTF-8") ;
System.out.println(value);
}
- 用超链接提交表单信息(通过 get 方式提交,需调用到doGet方法)
<a href="/Servlet/test?username=江西">登录<a/>
总结:
通过get提交表单信息有两种:
1.通过form表单的 method 设置 get方法提交(即method="get") 默认也是 get
通过get方法提交到 Servlet程序中, 首先是得到表单的信息,但是乱码,
然后还得手动去设置编码方式
即 value1 = new String (value.getBytes("iso-8859-1"), "UTF-8")
2.通过超链接提交
通过post提交表单:
在form表单的 method 设置 post方法提交(即method="post") ,
通过post方法提交到 Servlet程序中,request 要在得到表单信息之前 设置编码方式
即 request.setCharacterEncoding("UTF-8");
get: 通过get提交表单的信息,地址栏上可以看到,安全性不好
post:通过post提交表单的信息,地址栏上看不到表单的信息,
出现这种机制的原因:
在于http协议上,通过get提交的信息加在url后面,所以能看到;
通过post提交的信息是在请求体上的,也就是你敲了两次回车后,发送的信息,所以看不到
如果以上方法没有效果,可以尝试使用java.net.URLDecoder.decode(URIString, "UTF-8")方法:
encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来。encodeURI方法不会对下列字符进行编码:":"、"/"、";" 和 "?",encodeURIComponent方法可以对这些字符进行编码。
decodeURI()方法相当于java.net.URLDecoder.decode(URIString, "UTF-8");
encodeURI()方法相当于java.net.URLEncoder.encode(URIString, "UTF-8");
二、例子
<script type="text/javascript">
var uriStr = "http://www.baidu.com?name=张三&num=001 zs";
var uriec = encodeURI(uriStr);
document.write("编码后的" + uriec);
var uridc = decodeURI(uriec);
document.write("解码后的" + uridc);
</script>
编码后的http://www.baidu.com?name=%E5%BC%A0%E4%B8%89&num=001%20zs
解码后的http://www.baidu.com?name=张三&num=001 zs
java中解决request中文乱码问题的更多相关文章
- 解决Java中的HttpServletResponse中文乱码问题
response.setHeader("Content-type", "textml;charset=UTF-8"); response.setCharacte ...
- 解决request中文乱码问题
因为request请求都是ISO-8859-1,而jsp页面是采用UTF-8编码,所以当传递的参数有中文时,页面会出现乱码,但是可以将取到的数据通过String的构造函数使用指定的编码类型重新构造一个 ...
- [Java][Web]解决 Request 的乱码
解决 get 提交的乱码 (手工处理) String username = request.getParameter("username"); username = new Str ...
- servlet中获取request中文乱码问题分析
request.setCharacterEncoding("utf-8");//第一种情况 log.info("服务商名称:" + request.getPar ...
- java中post时中文乱码
http://blog.chinaunix.net/uid-12348673-id-3335300.html 设置流的编码,就避免了乱码 public static String post(Strin ...
- request.getParameter()及解决数据库中文乱码问题——实习第七天
今天老师让我们自己做一个小项目,我开始着手于实现这个小项目.途中遇到过几个小问题,在此做个小记录, 相信后期还是会借鉴的. 1,从前台传入数据给后台传入数据,并没有传入成功: 输出的为Null. 当然 ...
- Windows平台下在Emacs中使用plantuml中文乱码问题(已解决)
Windows平台下在Emacs中使用plantuml中文乱码问题(已解决) */--> code {color: #FF0000} pre.src {background-color: #00 ...
- 解决Java保存到数据库中文乱码问题,加useUnicode=true&characterEncoding=UTF-8
Java保存到数据库中文乱码, 解决方法如下: 我们在连接MySQL数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8,但是问什 ...
- 解决URL中文乱码问题--对中文进行加密、解密处理
解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...
随机推荐
- javascript第六课类型转换
1.parseint(参数): 转换为整数,即使参数中的字符串包含字母数字混合,此方法也会自动一个一个判断和转换 parseInt(参数,进制);将参数通过几进制的方式转为数字 2.parsefl ...
- 多线程编程 - GCD(转)
原文:http://blog.csdn.net/q199109106q/article/details/8566300 一.简介 在iOS所有实现多线程的方案中,GCD应该是最有魅力的,因为GCD本身 ...
- 数据挖掘(七):Apriori算法:频繁模式挖掘
1 算法思想 算法使用频繁项集性质的先验知识.Apriori使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集.首先,通过扫描数据库,累积每个项的计数,并收集满足最小支持度的项,找出频繁1项 ...
- 利用PowerDesigner15在win7系统下对MySQL 进行反向project(二)
利用PowerDesigner15在win7系统下对MySQL 进行反向project 1.打开PowerDesigner,建立新模型.选择Physical Data Model中的Physical ...
- 安卓图片框架:universal-image-loader的高速使用
在安卓开发过程中难免会遇到下面几个情况: 1.图片异步载入 2.图片缓存 3.图片显示 4.其他--(忘记了) 以上的这些情况,可能要自己去写不少代码去实现这些功能.并且对于一些新手,可能写了半天,发 ...
- new到底做了什么?
下面是一个实例化自定义的对象,我们将要对他进行分析 //定义构造函数 function A(){ this.b = 1 //在这个对象里增加一个属性 //不可以拥有返回对象的return语句 } va ...
- Ant 简易教程
转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...
- ssh框架用JUnit测试
public class testAuxDict { //读spring配置文件 public static BeanFactory factory = new ClassPathXmlApplica ...
- iOS开发那些事儿(二)热补丁
一.热补丁作用:修复导致崩溃的错误.替换/增加方法.替换原来的界面等等 二.实现手段:JSPatch (使用Objective-C Objective-C和JavaScript jspatch桥.你可 ...
- C# - 重定义一个接口的实现
using System;using System.Collections.Generic;using System.Text; namespace MyTester{ public inter ...