`

response.setContentType与 request.setCharacterEncoding 区别

    博客分类:
  • jsp
 
阅读更多

response.setContentType与 request.setCharacterEncoding 区别

引用地址http://hi.baidu.com/810472096/item/428e536ab7f08633ac3e83ce

 

1、request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值

指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter()。而且,该指定只对POST方法有效,对GET方法无效。分析原因,应该是在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析提交内容,setCharacterEncoding()自然就无效。

get需在Tomcat的server.xml中的:

URIEncoding="GBK" />) 加入URIEncoding="GBK",解决get请求乱码问题

2、response.setContentType("text/xml;charset=GBK")是设置页面中为中文编码
前者是设置动态文字(参数,数据库),后者设置页面静态文字

response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码.
response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.
与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前


补充:
问题1 :从Jsp页面页面传递参数到Servlet显示中文乱码
解决办法:

如果是post 方法提交 则加入以下代码:
request.setCharacterEncoding("GBK");//注意首先保证编码一至,jsp页面用什么编码在此就用什么编码(GBK/GB2312等),此代码只对post提交方式有效
response.setContentType("text/xml;charset=GBK")是设置页面中为中文编码
备注:以上两行代码必须放在PrintWriterout=response.getWriter(); 之前
get 方法提交
如变量name 用
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK");

问题2:解决get方式提交乱码问题:

修改tomcat server.xml 文件,加上红色部分代码

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK"/>

备注:以上字符编码格式根据自己需要设定,只要保持一致即可

分享到:
评论

相关推荐

    用户管理系统(ums)

    response.setCharacterEncoding("GB18030"); request.setCharacterEncoding("GB18030"); //调用业务逻辑 UserDAO userDAO = new UserDAO(); // 返回的list值 ArrayList list=userDAO.queryAll(); //...

    解决网页乱码.zip

    "setContentType与setCharacterEncoding有什么区别.txt"文件名表明了这两者的作用不同。`setContentType()`主要用于设定HTTP响应的MIME类型,包含字符集信息;而`setCharacterEncoding()`则专门用于设置请求或响应的...

    聊天室程序下载

    request.setCharacterEncoding(encoding); response.setContentType("text/html; charset="+encoding); } chain.doFilter(request, response); } public void destroy() { this.encoding = null; this....

    response设置的实例源码

    response.setCharacterEncoding("UTF-8"); ``` 五、重定向与转发 1. 重定向:使用`sendRedirect(String location)`方法可以将客户端的请求转发到新的URL。这会发送一个302临时重定向状态码。 ```java response....

    jQuerySlide切换

    request.setCharacterEncoding("utf-8"); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); AdvertDao adverDao=new ...

    解决servlet中文乱码问题1

    request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); chain.doFilter(request, response); return; } request.set...

    servlet中文乱码问题

    通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...

    jsp中影响编码的属性及其设置小结

    例如,`request.setCharacterEncoding()`用于处理请求的输入数据,`response.setCharacterEncoding()`用于设置响应的输出数据的编码。 5. `setContentType()`:`response.setContentType()`用于设置HTTP响应的MIME...

    乱码问题解决方案

    一、有关中文乱码: mysql部分: url配置:jdbc:mysql://localhost:3306/XXX?useUnicode=true&... request.setCharacterEncoding("utf-8"); *在html或者jsp界面更改为UTF-8 ;charset=utf-8" %/&gt;

    Request&Response-授课

    在这个示例中,我们使用了HttpServletResponse对象的setCharacterEncoding和setContentType方法来设置响应对象的字符编码和内容类型,从而解决了中文乱码问题。 响应对象是JavaWeb开发中非常重要的一部分,它们...

    java通过js上传文件

    response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); // out.print(" 上传的文件为:"+name+" "); // out.print("保存在服务器上 的地址为:"+path+"&lt;/font&gt;"); } } }...

    java web学习_浅谈request对象中get和post的差异

    request.setCharacterEncoding("gbk"); response.setCharacterEncoding("gbk"); String username = request.getParameter("userName"); String password = request.getParameter("password"); String sex = ...

    JavaMail的所有内容

    request.setCharacterEncoding("gbk"); response.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); // 获取值 MultipartRequest req=new MultipartRequest(request, ".",5*1024*...

    第20章 Request和Response.pdf

    - `setCharacterEncoding(String encoding)`:设置请求体的字符编码,防止中文乱码。 二、Response对象 `Response`对象代表HTTP响应报文,用于向客户端发送响应。其主要功能包括: 1. **设置响应消息**: - `...

    Servlet 中文乱码问题

    如果使用`response.getOutputStream()`,则不需要设置`response.setCharacterEncoding()`,因为它处理的是字节流而非字符流。 当使用`PrintWriter`输出中文字符串时,如果没有设置正确的字符编码,浏览器可能会按照...

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

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

    servlet输出中文乱码问题

    使用`PrintWriter`输出流时,确保在此之前已经通过`response.setCharacterEncoding("utf-8")`正确设置了字符集。 #### 四、示例代码解析 下面是一段具体的示例代码,展示了如何正确设置编码来避免乱码: ```java...

    JSP乱码解决方案J2EE

    如果页面提交的数据编码不同,需在获取参数前通过`request.setCharacterEncoding("GBK")`或`request.setCharacterEncoding("gb2312")`设置请求编码。输出变量到页面时,可设置响应内容类型`response.setContentType...

Global site tag (gtag.js) - Google Analytics