servlet 中文编码设置
Tomcat服务器默认采用的ISO8859-1编码
产生的原因:
不同数据来源的编(解)码格式不同:
数据来源 | 默认编码格式 |
---|---|
浏览器页面 | GBK (可在浏览器页面右键切换) |
request(get) | ISO-8859-1 |
request(post) | GBK(同浏览器),但是如果是服务器来的页面一般已经设置了UTF-8(例如JSP提交的页面) |
Servlet(response) | ISO-8859-1 |
1.请求中文的处理:
get:
String code=new String(request.getParameter("code").getBytes("ISO8859-1"),"UTF-8");
post:
request.setCharacterEncoding("UTF-8");
2.响应中的中文处理:
response.setContentType(“text/html;charset=UTF-8”);
3.注意
1,一般情况下,JSP页面的默认编码字符集要设置成UTF-8。否则无法完成中文显示和数据传输。这里不考虑GBK的情况
2,在服务器端的程序之间,数据传输都是以UTF-8格式传输的。所有不用考虑中文乱码问题
3,setCharacterEncoding(“UTF-8”)是设置字符集,request调用是设置解码方式(因为是从页面过来的),而response调用时设置编码方式(因为要想页面输出内容,先在Servlet中编码)
4,getBytes(“UTF-8”);方法通过字符串调用,是按照指定字符集编码。
5,new String(string.getBytes(“ISO-8859-1”),”UTF-8”);方法将string字符串先以原始(ISO-8859-1)进行解码转成字节数组,在以(UTF-8)编码封装成新字符串。