编码
来源:互联网 发布:jmeter数据库查询结果 编辑:程序博客网 时间:2024/06/05 21:15
常见字符串:
- ISO-8859-1(不支持中文)
- GB2312
- GBK
- GB18030(系统默认,中国国标码)
- UTF-8(万国码,支持全世界的编码,常用)
1.响应编码
注:response设置Content-Type头还有一个便捷方法response.setContenType("text/html:charset=utf-8")
在使用getWriter()之前先调用response.setContentType(“text/html;charset=utf-8”);
- 当使用response.getWriter()向客户端发送字符数据默认ISO编码,不支持中文
- 当使用response.getWriter()前可使用response.setCharaceterEncoding()设置字符流编码为gbk或utf-8
- 当使用response.getWriter()前用response.setHeader(“Content-type”,”text/html;charset=utf-8”)设置响应头通知浏览器服务器使用编码类型
- response.setHeader(“Content-type”,”text/html;charset=utf-8”)快捷方法为setContentType(text/html;charset=utf-8”)
2.请求编码
客户端发送给服务器的请求参数是什么编码?
graph TD客户端首先打开一个页面-->页面中提交表单或点击超链接
在这个页面服务器响应什么编码,客户端发送的请求就是什么编码
服务服务器默认使用什么编码解码参数?
- 服务器默认使用ISO-8859-1 ISO不支持中文
请求编码2种处理
GET请求参数不在请求体中,编码处理:
String username=new String(request.getParameter("iso-8859-1"),"utf-8");
在servlet.xml中配置URIEncoding=utf-8
POST请求参数在请求体中,编码处理
String username=new String(request.getParameter("iso-8859-1"),"utf-8");
在获取参数之前调用request.setCharacterEncoding(“utf-8”);
3.URL编码
表单类型:Content-Type:application/x-www-form-urlencoded,就是把中文转换成%后面跟随两位的16进制
为什么用它: 在客户端和服务器之间传递中文时需要把它转换成网络合适的方式
- 它不是字符编码
- 它是用来在客户端与服务器之间传递参数的一种方式
- URL编码需要先制定一种字符编码,把字符串解码后,得到byte[] ,然后把小于0的字节+256,再转换成16进制. 前面再加一个%
- POST请求默认就是用URL编码! tomcat自动使用URL解码
- URL编码: String username=URLEcoding.encode(username,”utf8”);
- URL解码: String username=URLEcoding.decode(username,”utf8”);
最后需要把链接中的中文参数,使用url编码!