要点:setCharacterEncoding与setContentType的理解要点。
代码:
resp.setCharacterEncoding("UTF-8"); //注1
resp.setCharacterEncoding("GBK"); //注2
resp.setContentType("text/plain;charset=UTF-8"); //注3
resp.setContentType("text/plain;charset=GBK"); //注4
resp.setContentType("text/plain;charset=ISO-8859-1"); //注5
背景:
*、当前操作系统是Windows,而Windows上的浏览器默认接收请求的编码是:GBK。
说明:
注1、响应体按UTF8编码,浏览器按GBK解码,会出乱码。
注2、响应体按GBK 编码,浏览器按GBK解码,不会出乱码,正常显示。
注3、响应体按UTF8编码,同时告诉浏览器要按UTF8解码,不会出乱码。
注4、响应体按GBK 编码,同时告诉浏览器要按GBK解码,不会出乱码。
注5、响应体按ISO 编码,同时告诉浏览器要按ISO解码,但ISO不支持中文,所以仍然是乱码。
说明2:
*、用【setCharacterEncoding】,像迁就,必须按浏览器的编码进行处理。
*、用【setContentType】,像协商,自己用一种编码,同时建议浏览器也用这种编码进行处理。
*、协商 > 迁就。所以在响应体中设置编码,多用setContentType方法。
搜索
复制