对Java中的某个字符串进行URL编码,其实是在对它的某种字符集编码(非Unicode码)数据进行URL编码,而Java中的字符串是以Unicode字符集编码存在的,所以,在对Java中的字符串进行URL编码时,必须指定是对这个字符串的哪种非Unicode的字符集编码进行URL编码。
JDK的java.net包中有两个类:URLEncoder和URLDecoder,URLEncoder类中定义了一个encode静态方法来完成URL编码,URLDecoder类中定义了一个decode静态方法来完成URL解码。
public static String encode(String s,String enc)
throws UnsupportedEncodingException
public static String decode(String s,String enc)
throws UnsupportedEncodingException
浏览器怎样进行URL编码
浏览器对FORM表单中输入的中文字符都会进行URL编码后再传送给WEB服务器。
对于页面中的FORM表单中输入的内容,浏览器将按照当前显示页面时所采用的字符集编码来进行URL编码。
与请求参数的字符集编码相关的方法
getCharacterEncoding方法
setCharacterEncoding方法
getParameter方法的中文问题à实践
l 解决getParameter方法读取POST方式下的“application/x-www-form-urlencoded”编码格式的实体内容中的参数时的乱码。
l 解决getParameter方法读取URL地址后面的参数时的乱码。
l 了解Servlet之间进行调用时传递参数的乱码问题。
使用<meta>标签模拟响应消息头
l 问题:
利用HTTP消息的响应头字段,可以让浏览器完成各种有用的功能,但是,这需要通过编写WEB服务器端的程序来实现。如果不会服务器端编程的普通HTML页面制作者也想借助HTTP消息的响应头字段来实现一些特殊功能,他们该怎么办呢?
l 解决方案:
HTML语言中专门定义了<meta>标签的http-equiv属性来在HTML文档中模拟HTTP响应消息头,当浏览器读取到HTML文档中具有http-equiv属性的<meta>标签时,它会用与处理WEB服务器发送的响应消息头一样的方式来进行处理。
l 举例:
ü <meta http-equiv="Expires" content="0">
ü <meta http-equiv="Cache-Control" content="no-cache">
ü <meta http-equiv="Pragma" content="no-cache">
ü <meta http-equiv="Refresh" content="0;url=http://www.it315.org">
ü <meta http-equiv="Content-Type" content="text/html; charset=GB2312">