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/

转载请注明:博客园

目录
相关文章
|
9月前
|
应用服务中间件
SpringMVC的乱码问题解决
SpringMVC的乱码问题解决
41 0
|
Java
servlet中解决中文乱码的方法
servlet中解决中文乱码的方法
81 0
|
应用服务中间件
SpringMVC 解决乱码问题
通过POST方法接收用户提交数据的时候,如果数据中存在中文,那么就会触发乱码问题 通过自带过滤器解决(推荐):🛹 在SpringMVC中配置过滤器,web.xml中配置。
114 0
SpringMVC - 过滤器之中文乱码
SpringMVC - 过滤器之中文乱码
71 0
|
Java 应用服务中间件 容器
JSP和Servlet的六种中文乱码处理方法
JSP和Servlet的六种中文乱码处理方法
206 0
|
Java 应用服务中间件 API
Java Web(二) Servlet中response、request乱码问题解决
三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身、博客坚持。
172 0
|
应用服务中间件 Java
初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)
Servlet映射的细节 同一个Servlet映射多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名 第一种方法: 第二种方法: 第三种方法:通配符(*.
1375 0