首先观察如下代码:
<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");
此时浏览器显示的又是什么呢?

还是乱码?
终极解决:修改浏览器的默认编码格式。
1.用户手动修改(体验度不高)
2.response.setHeader("Content-type","text/html;charset=UTF-8");//告诉浏览器编码格式;
最终显示: