HTML编码如何防止乱码以及路径的调用方法。

想要不乱码:在使用getWrite()方法之前,先调用下面方法:response.setContentType("text/html;charset=utf-8")
编码:
常见字符串编码:iso-8859-1(不支持中文)、gb2312/gbk/gb18030(系统默认编码,中国的国标码)、utf-8(万国码,支持全世界的编码,所以我们使用这个)


1.响应编码
*当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用ISO,因为ISO不支持中文,所以会乱码。
*在使用response.getWriter()之前可以使用response.setCharaceterEncoding()来设置字符流的编码为gbk或者Utf-8,当然我们通常会选择utf-8.
*在使用response.getWriter()之前可以使用response.setHeader("Content-Type","text/html;charset=utf-8")来设置响应头,通知浏览器使用相同的UTF-8编码。
*setHeader("Content-Type","text/html;charset=utf-8")的快捷方法是:setContenType("text/html;charset=UTF-8")。
2.请求编码
*客户端发送给服务器的请求参数是什么编码:
客户端首先要打开一个页面,然后在页面中提交表达或者点击超链接!在请求这个页面时,服务器响应的编码是什么,那么客户端发送请求时的编码就是什么。
*服务器端默认使用什么编码来解码参数:
服务器端默认使用ISO-8859-1来解码!所以这一定会出现乱码的,因为ISO不支持中文!
*请求编码处理分为两种:GET和POST:GET请求参数不住请求体中,而POST请求参数在请求体中,所以他们的处理方式是不同的。
*GET请求编码处理:
**String username=new String(request.getParameter("ISO-8859-1"),"UTF-8");
**在server.xml中配置URIEncoding=utf-8;
*POST请求编码处理:
**String username=new String(request.getParameter("ISO-8859-1"),"utf-8");
**在获取参数之前调用request.setCharacterEncoding("utf-8");


3.URL编码:
*它不是字符编码;
*它是用来在客户端与服务器之前传递参数用的一种方式!
*URL编码需要先指定一种字符编码,把字符串解码后,得到byte[];然后把小于0的字节+256,再转化成16进制。前面再添加一个%。
*POST请求默认就使用URL编码!tomcat会自动使用URL编码!
*URL编码:String username= URLEncoder.encode(username,"UTF-8");
*URL解码:String username=URLDeconder.decode(username,"UTF-8");
-----------------------------------路径:
*web.xml中<url-pattern>路径,叫Servlet路径;
**要么以*开头,要么是/开头。
*转发和包含路径:
**以/开头:相对当前项目路径,例如:http://localhost:8080/mypro
**不以/开头:相对当前Servlet的路径
*重定向路径(客户端路径)
**以/开头:相对当前主机,所以需要自己收到添加项目名。
*页面中超链接和表单路径
**与重定向相同都是客户端路径!需要添加项目名称
*ServletContext获取资源路径
**相对当前项目目录,即当然index.jsp所在目录。
*ClassLoader获取资源路径
**相对classes目录
*Class获取资源路径
**以/开头相对classes目录
**不以/开头相对当前.class文件所在目录

猜你喜欢

转载自blog.csdn.net/qq_18725165/article/details/80394364