初学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所示,利用第一种方法,输出正确的中文: