天天看点

Servlet的PrintWrite的中文乱码

首先观察如下代码:

<pre name="code" class="java">public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	PrintWriter out = response.getWriter();
	out.print("文件上传成功!");
}
           

可惜浏览器返回的是??????!

原因:

1.当办事器调用servlet时同时创建一个request和response对象,request用来存储客户端发送请求,response用来存储办事器返回的数据;

2.当servlet拿着“文件上传成功”去查它的默认编码表,sun公司显然是查国外码表,之后存储在response里,然后输出;而浏览器的编码在中文的windows下一般是GBK;浏览器拿到iso编码的字符去查GBK的码表,显然就是乱码。

解决:

那就修改response的编码格式,代码如下:

response.setCharacterEncoding("UTF-8");

此时浏览器显示的又是什么呢?

Servlet的PrintWrite的中文乱码

还是乱码?

终极解决:修改浏览器的默认编码格式。

1.用户手动修改(体验度不高)

2.response.setHeader("Content-type","text/html;charset=UTF-8");//告诉浏览器编码格式;

最终显示:

Servlet的PrintWrite的中文乱码

继续阅读