用servlet写小程序时遇到了中文乱码问题,在网上找到的答案千篇一律;基本都是要在方法中设置
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
然而不管我设置成什么编码都是乱码的,输出???
设置如下:
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
用浏览器的抓包工具一看是这样的,注意响应头中的Content-Type:
说明前面的设置根本没起作用,我甚至都怀疑是系统的原因了,但是用jsp页面来写的话完全没有问题啊!
但是一个偶然的操作居然解决了这个问题:
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
似乎看上去和上面的设置没多大差别,但是请注意这几行的
顺序!!!再看看响应头:
字符集设置成功!
总结:在servlet中输出中文,如果用到PrintWriter方式,必须在调用getPrintWriter()前使用setContentType() 或者 setCharacterEncoding()!