请求参数、响应输出中文乱码问题
2017-11-27 21:12
190 查看
响应输出中文问题
当Servlet程序需要输出纯文本格式的响应正文时,通常会调用ServletResponse对象的getWriter方法返回一个PrintWriter对象,PrintWriter out = response.getWriter();
然后使用这个PrintWriter对象将文本内容写入到客户端。
out.println("<p>您购买的书籍有:</p>");可以使用ServletResponse接口中的setCharacterEncoding()、setContentType()和setLocale()等方法来指定字符集。字符编码方式按含有中文的字符集要进行转换。
//设置响应的文本类型为HTML,字符编码为UTF-8 response.setContentType("text/html;charset=UTF-8");
setContentType()方法既可以设置PrintWriter输出流中字符的编码方式,也可以设置浏览器接收到这些字符后以什么编码方式来解码。
请求参数的中文问题
POST请求的中文请求参数处理请求时,浏览器会按当前显示页面所采用的字符集对请求的中文数据进行编码,而后再以报文体的形式传送给Tomcat服务器,服务器端Servlet在调用HttpServletRequest对象的getParameter()方法时,会按默认的不支持中文的字符集进行编码。因此会造成中文参数的乱码问题。
因此对于POST请求,在获取参数时要先调用setCharacterEncoding()方法设定与页面请求编码相同的字符集。
/./获取请求对象的字符编码,编码值与页面请求编码值一致。 request.setCharacterEncoding("UTF-8"); //获取请求数据 String username = request.getParameter("username");
对于GET请求,当请求URL中查询字符串含有中文参数时,也有可能会出现中文乱码问题。也会由客户端编码和服务器端解码使用的字符集不一致而产生。
JSP页面中的编码设置可如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> </title> </head>
相关文章推荐
- Http协议中关于请求与响应中文参数乱码问题详解
- 解决servlet响应用户中文请求信息的乱码问题
- SpringMVC 解决Controller里获取请求参数出现中文乱码问题
- jsp get方式请求参数中包含中文乱码问题解决
- get请求参数为中文是乱码的问题
- Spring Tomcat Post Get 请求参数有中文时出现乱码或+号变空格等关于编码的问题
- 利用jQuery 解决URL请求参数有中文时出现乱码的问题
- 请求参数的中文乱码问题
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
- Android网络请求,请求参数是中文导致的乱码问题
- 解决页面请求/响应中文乱码问题
- 解决android http请求带中文参数乱码问题
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
- 使用SpringMVC参数传递时,解决get请求时中文乱码的问题
- jsp带中文请求参数的乱码问题的解决方法
- springMVC请求和响应时的中文乱码问题
- Http请求post方法,请求和响应中文乱码问题的一点解决方法
- tomcat中请求参数中文中乱码问题
- 关于struts2.1.6接收中文请求参数乱码问题
- 页面get请求 中文参数方法乱码问题