servlet中文乱码方法

简介: 1 提交页编码为:GBK 2 servlet获取提交值用gbk解码 String s=new String(request.getParameter("tbxname").getBytes("ISO-8859-1"),"GBK"); out.println(s);   原因请参考(引): 在 servlet引擎实现 request.getParameter("myparam")时,会先在一个缓存里找一下,如果没有,就会开始解析参数并把解析后的参数和其对应的值放入缓存中。

1 提交页编码为:GBK

2 servlet获取提交值用gbk解码

String s=new String(request.getParameter("tbxname").getBytes("ISO-8859-1"),"GBK");
 out.println(s);

 

原因请参考(引):

在 servlet引擎实现 request.getParameter("myparam")时,会先在一个缓存里找一下,如果没有,就会开始解析参数并把解析后的参数和其对应的值放入缓存中。而在解析参数时,servlet规范中规定:首先按照 request.getCharacterEncoding获取的编码对解析出来的byte进行编码,创建新的字符串。如果request.getCharacterEncoding 的值是null,则按照ISO-8859-1来进行编码。而现在大多的浏览器在发送数据时都没有发送客户端的数据编码。所以在没有预先设置过的情况下,引擎应该都是按着ISO-8859-1来处理参数的值。

    假如表单的参数实际值是“中国” 那么按着GBK的编码提交到服务器端的myparam的值对应的应是4个byte.假设 解析出来的byte 是paramBytes,那么引擎为我们放入参数缓存中的参数值就是这样的 new String(paramBytes,encoding);很明显本来2个字节参能表达一个汉字 ISO-8859-1来编码之后,每个字节都成了单独的一个字符:4个字节成了四个字符,这就是我们看到的乱码出现的原因。

请参考:ISO-8859-1

http://wiki.ccw.com.cn/ISO_8859-1

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
Servlet方法介绍及体系结构
Servlet方法介绍及体系结构
146 0
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
存储 Java 应用服务中间件
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解(2)
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解
212 2
|
Web App开发 XML Java
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解(1)
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解
479 2
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
缓存 Java
严重: Servlet[jsp]的Servlet.service()抛出异常 java.lang.IllegalStateException: 当前响应已经调用了方法getOutputStream()
严重: Servlet[jsp]的Servlet.service()抛出异常 java.lang.IllegalStateException: 当前响应已经调用了方法getOutputStream()
1014 0
|
JSON Java 数据格式
idea 从Servlet转发到jsp页面中文乱码
idea 从Servlet转发到jsp页面中文乱码
296 0
|
前端开发 Java 应用服务中间件
Servlet 目录(pom.xml内容) 和 打包的两种方法
Servlet 目录(pom.xml内容) 和 打包的两种方法
319 0
Servlet 目录(pom.xml内容) 和 打包的两种方法
为什么不重写Servlet中的Service()方法
为什么不重写Servlet中的Service()方法
Servlet—HttpServletRequest与HttpServletResponse对象常用方法
Servlet—HttpServletRequest与HttpServletResponse对象常用方法
Servlet—HttpServletRequest与HttpServletResponse对象常用方法