JSP+Servlet学习经验1:解决form表单提交后相应页面中文乱码的问题

来源:互联网 发布:德州扑克数据分析软件 编辑:程序博客网 时间:2024/06/05 04:47

初学JSP与Servlet的同学估计经常会遇到类似问题,有时输入的中文响应输出为问号(???),有时输出乱码,今天查了一些资料算是理清了问题的原因。

1.问题根源

问题的根源在于利用form表单提交数据时,浏览器采用UTF-8的方式进行编码,而容器采用的默认解码方式为"ISO-8859-1",这种编码不能够解析中文,因此会出现乱码的情况。

2.解决措施

明白了问题的根源后,可以通过以下两种方式解决:

(1).对request输入数据进行内容设置来控制容器解码的编码类型为UTF-8,并且将response输入类型设置成相同类型:

request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset:utf-8");

如下图1所示,利用第一种方法,输出正确的中文:


(2).不对请求与响应的编码进行处理,直接对request接受到的参数进行编码处理,通过将输入转换为字节(getBytes()方法),再将其编码为设定的类型:

String name=request.getParameter("name");String newName=new String(name.getBytes("ISO-8859-1"),"UTF-8");

如下图2所示,利用第二种方法,输出名字为中文,其余为乱码:




1 0
原创粉丝点击