您的位置:首页 > 其它

请求参数、响应输出中文乱码问题

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>


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: