您的位置:首页 > 其它

表单提交servlet的两种解决乱码方式

2016-03-10 22:35 393 查看
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*下面的是request乱码问题*/

String uname= (String) req.getParameter("uname");
String pw=(String) req.getParameter("pw");

uname=new String(uname.getBytes("iso-8859-1"),"utf-8");
System.out.println(uname+"  "+pw);

/*下面的代码是response的乱码问题*/

resp.setContentType("text/html;charset=UTF-8");//目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;
resp.setCharacterEncoding("UTF-8");/*的目的是用于response.getWriter()输出的字符流的乱码问题
,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据
以UTF-8解码后发向浏览器;
*/

ServletOutputStream out=resp.getOutputStream();

//out.print(uname);//这样遇到中文还会报错!!
out.write(uname.getBytes("UTF-8"));

/*PrintWriter out2=resp.getWriter();

out2.print(uname+"2");
*/
//PrintWriter与ServletOutputStream只能二选其一,否则会报错,用PrintWriter更好

}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

/*下面的是request乱码问题*/
req.setCharacterEncoding("utf-8");

String uname= (String) req.getParameter("uname");
String pw=(String) req.getParameter("pw");

System.out.println(uname+"  "+pw);

/*下面的代码是response的乱码问题*/
resp.setContentType("text/html;charset=UTF-8");//目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;
resp.setCharacterEncoding("UTF-8");/*的目的是用于response.getWriter()输出的字符流的乱码问题
,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据
以UTF-8解码后发向浏览器;
*/

PrintWriter out=resp.getWriter();

out.print(uname);

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