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"/>
备注:以上字符编码格式根据自己需要设定,只要保持一致即可
相关推荐
response.setCharacterEncoding("GB18030"); request.setCharacterEncoding("GB18030"); //调用业务逻辑 UserDAO userDAO = new UserDAO(); // 返回的list值 ArrayList list=userDAO.queryAll(); //...
"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.setCharacterEncoding("UTF-8"); ``` 五、重定向与转发 1. 重定向:使用`sendRedirect(String location)`方法可以将客户端的请求转发到新的URL。这会发送一个302临时重定向状态码。 ```java response....
request.setCharacterEncoding("utf-8"); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); AdvertDao adverDao=new ...
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); chain.doFilter(request, response); return; } request.set...
通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...
例如,`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" %/>
在这个示例中,我们使用了HttpServletResponse对象的setCharacterEncoding和setContentType方法来设置响应对象的字符编码和内容类型,从而解决了中文乱码问题。 响应对象是JavaWeb开发中非常重要的一部分,它们...
response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); // out.print(" 上传的文件为:"+name+" "); // out.print("保存在服务器上 的地址为:"+path+"</font>"); } } }...
request.setCharacterEncoding("gbk"); response.setCharacterEncoding("gbk"); String username = request.getParameter("userName"); String password = request.getParameter("password"); String sex = ...
request.setCharacterEncoding("gbk"); response.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); // 获取值 MultipartRequest req=new MultipartRequest(request, ".",5*1024*...
- `setCharacterEncoding(String encoding)`:设置请求体的字符编码,防止中文乱码。 二、Response对象 `Response`对象代表HTTP响应报文,用于向客户端发送响应。其主要功能包括: 1. **设置响应消息**: - `...
如果使用`response.getOutputStream()`,则不需要设置`response.setCharacterEncoding()`,因为它处理的是字节流而非字符流。 当使用`PrintWriter`输出中文字符串时,如果没有设置正确的字符编码,浏览器可能会按照...
- **明确指定编码**:尽量避免依赖默认编码设置,明确指定`response.setCharacterEncoding()` 和`request.setCharacterEncoding()`。 通过理解并合理应用这些编码设置,可以显著提高Web应用的稳定性和用户体验。
使用`PrintWriter`输出流时,确保在此之前已经通过`response.setCharacterEncoding("utf-8")`正确设置了字符集。 #### 四、示例代码解析 下面是一段具体的示例代码,展示了如何正确设置编码来避免乱码: ```java...
如果页面提交的数据编码不同,需在获取参数前通过`request.setCharacterEncoding("GBK")`或`request.setCharacterEncoding("gb2312")`设置请求编码。输出变量到页面时,可设置响应内容类型`response.setContentType...