`
conray
  • 浏览: 41065 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

request.setCharacterEncoding 乱码 与 response.setCharacterEncoding 乱码测试

阅读更多
   本次测试还是参考网上的帖子,总结如下:


首先 明确一点: 字节流<------>字符流 的相互转换  ,例如:
                   
 String s = "中文";
		byte[] bs2 = s.getBytes("utf-8");
		String s1 = new String(bs2,"iso-8859-1");
		String s2 = new String(bs2,"utf-8");
		String s3 = new String(s1.getBytes("iso-8859-1"),"utf-8");
		System.out.println(s1+"\n"+s2+"\n"+s3);
              输出结果:
                   
??????
中文
中文


以下适合POST 提交以上例子说明 两点:
1、字节流到字符流的 正向和反向 的编码格式要一致,才能正确转换,否则只会得到乱码。2、s1 由 不一致的 编码格式 iso-8859-1 转换成乱码后,可以再次还原为字节流,最后使用一致的编码格式得到正确的中文

好,明白这一点,第一我们首先看 request ,从浏览器到服务器的请求过程,form表单的提交信息需要 经过编码(什么编码??想一想,我们如何知道) 转为字节流,而后(这里讲tomcat)服务器会 逆向把字节流 通过默认编码iso-8859-1来还原为字符流,此时我们使用request.getParameter("XX")得到的东东是正确?还是乱码? 关键问题是:form表单提交时转换字节流时的 编码格式(A)   和   tomcat 把字节流转回字符流的 编码格式(B) 一致吗?
编码格式(B)=“iso-8859-1”
编码格式(A)我们从下面图中找:图示为简体中文(GB2312)


结果乱码。
简单的解决方法:
new String(request.getParameter("XX").getBytes("ISO-8859-1"),"GB2312")//每个参数都要这样做,代码重复

或者
request.setCharacterEncoding("GB2312");
request.getParameter("XX")//至少每个获取参数的地方需要写一次


OK! 问题是解决了,好点的办法:使用过滤器(如何实现?百度就可以)所有的请求都过滤。一次性了事。



待续...
参考作者:http://hi.baidu.com/smiky/blog/item/7131d71b342688dfac6e756f.html
http://china.manufacturer.com/article/study_for_character_encoding_java.htm
分享:http://www.iteye.com/topic/640940
分享:http://sailor90.iteye.com/blog/627514
分享到:
评论

相关推荐

    Jsp页面中的字符编码方式与乱码解决方法

    * 是否正确地使用了 request.setCharacterEncoding 和 response.setCharacterEncoding 方法 * 浏览器的编码方式是否正确 字符编码方式的设置是 JSP 中非常重要的一方面,正确地设置字符编码方式可以避免乱码问题的...

    jsp编码 jsp乱码

    jsp编码 jsp乱码解决方案 ...通过设置pageEncoding参数、contentType参数、request.setCharacterEncoding方法和response.setCharacterEncoding方法等,可以解决jsp页面中的乱码问题,提高Web应用程序的用户体验。

    web乱码解决web乱码解决

    我们可以在JSP文件中设置pageEncoding参数,contentType参数,request.setCharacterEncoding方法和response.setCharacterEncoding方法来指定正确的编码。同时,我们也需要了解浏览器是怎么样对接收和发送的数据进行...

    Jsp页面中的字符编码方式与乱码解决方法[归类].pdf

    在 JSP/Servlet 中主要有四个地方可以设置编码,分别是 pageEncoding、contentType、request.setCharacterEncoding 和 response.setCharacterEncoding。下面我们将详细介绍每一个编码方式的作用和使用场景。 1. ...

    JSP在Servlet中的几个编码的作用及原理 .txt

    具体涉及到了`pageEncoding`, `contentType`, `request.setCharacterEncoding`, `response.setCharacterEncoding`等几个关键概念。 --- ### 正文 在JSP与Servlet的实际开发过程中,中文乱码问题是非常常见的一个...

    解决网页乱码.zip

    接着,"html,jsp编码详解_request.setContentType,request.setCharacterEncoding,response.setContentType,resonse.setCharacterEncoding.txt"解释了HTML和JSP中处理乱码的关键API。`request.setContentType()`和`...

    数据库测试test.sql

    // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // ...

    MyEclipse中文乱码问题简单解决方案,不需任何编码转化

    &lt;%request.setCharacterEncoding("utf-8");%&gt;` 这段代码设置了页面的编码方式为 UTF-8,并将 request 对象的编码方式设置为 UTF-8。 2. 如果使用 Servlet,在 doPost 或 doGet 方法的第一行添加以下代码: `...

    JSP用户提交页面编码

    1. **调用时机**:应当在读取请求数据(如通过`request.getParameter()`方法获取参数值)之前调用`request.setCharacterEncoding()`方法,否则该设置将不会生效。 ```java protected void doPost...

    JSP在Servlet中的几个编码的作用及原理

    与`request.setCharacterEncoding`相对应,`response.setCharacterEncoding`用于设定服务器响应数据的编码方式。这一步骤至关重要,因为即使前端页面和后端处理逻辑中的编码设置都正确,如果响应头中的字符集未正确...

    tomcat与servlet乱码解决办法

    1. **统一字符编码**:确保所有相关的编码设置一致,例如JSP页面的`&lt;%@ page pageEncoding="UTF-8" %&gt;`, HTTP请求的`request.setCharacterEncoding("UTF-8")`以及响应数据的`response.setCharacterEncoding("UTF-8")...

    解决servlet中文乱码问题1

    ② 获取中文属性不出现乱码的方法是,对于post请求,在获取请求参数之前先调用setCharacterEncoding("UTF-8")方法设置字符编码读取。同时,也需要设置Response的字符编码为UTF-8,以确保中文字符正确地显示。 ...

    JSP中乱码解决办法

    具体做法是在获取参数前调用`request.setCharacterEncoding()`方法,指定字符集为GBK或其他所需编码格式。示例代码如下: ```jsp request.setCharacterEncoding("GBK"); %&gt; &lt;%=request.getParameter("info")%&gt; ``...

    JSP和Servlet中的几个编码的作用及原理

    - **明确指定编码**:尽量避免依赖默认编码设置,明确指定`response.setCharacterEncoding()` 和`request.setCharacterEncoding()`。 通过理解并合理应用这些编码设置,可以显著提高Web应用的稳定性和用户体验。

    Servlet 中文乱码问题

    GET请求的乱码处理通常在Servlet代码中完成,接收参数前需先设置请求的编码,如`request.setCharacterEncoding("UTF-8")`。 总结来说,解决Servlet中的中文乱码问题,关键在于明确字符编码的设定,确保请求和响应的...

    2种解决JSP中request乱码问题.docx

    request.setCharacterEncoding(encoding); } } chain.doFilter(request, response); } 其中,selectEncoding 方法可以根据需要选择合适的编码方式。 使用这两种方法可以解决 JSP 中 request 乱码问题,确保...

    中文岂能乱码(J2EE)

    与POST方式类似,可以在接收数据的JSP页面中使用`request.setCharacterEncoding()`方法进行设置。 **示例代码:** 与上面的POST方式相同,这里不再赘述。 #### 3. JSP → Servlet (POST方式) 从JSP页面向Servlet...

    中文乱码问题处理方法.docx

    request.setCharacterEncoding("gb2312"); 或者,使用过滤器来解决问题,例如: public class SetCharacterEncodingFilter implements Filter { private String encoding = null; private FilterConfig ...

    解决中文乱码问题

    对于Servlet接收Form/Request传递的参数时显示为乱码的问题,我们可以通过在用到request方法的前面加上:request.setCharacterEncoding("GBK");来解决。 在数据库存取的时候产生乱码的问题,我们可以通过选择UTF-8...

    解决web项目开发中常见的中文乱码问题.pdf

    request.setCharacterEncoding("GBK"); response.setCharacterEncoding("GBK"); ``` 然而,这种方法存在局限性,因为它只针对特定的请求处理。为了更全面地解决乱码问题,推荐采用过滤器(Filter)的方式。过滤器...

Global site tag (gtag.js) - Google Analytics