l
getParameter
等方法在读取的参数信息时,需要进行
URL
解码。
l
对于
HTTP
请求消息的请求行中的
URL
地址后的参数,
getParameter
等方法进行
URL
解码时所采用的字符集编码在
Servlet
规范中没有明确规定
Tomcat
中的
ServletRequest
对象的
getParameter
等方法默认采用
ISO8859-1
字符集编码进行
URL
解码,因此无法返回正确的中文参数信息。
l
对于
POST
方式下的“
application/x-www-form-urlencoded”
编码格式的实体内容,
getParameter
等方法以
ServletRequest
对象的
getCharacterEncoding()
方法返回的字符集编码对其进行
URL
解码。
l
getCharacterEncoding()
方法的返回值通常为
null
,对于这种情况,
ServletRequest
对象的
getParameter
等方法将使用默认的
ISO8859-1
字符集编码对实体内容中的参数进行
URL
解码,因此也将无法返回正确的中文参数信息。
l
ServletRequest
接口中定义了一个
setCharacterEncoding
方法来设置请求消息中的实体内容的字符集编码名称,
getParameter
方法将以该方法设置的字符集编码对实体内容进行
URL
解码。
l
setCharacterEncoding
方法设置的是请求消息中的实体内容的字符集编码名称,它只影响
getParameter
方法对
POST
方式下的“
application/x-www-form-urlencoded”
编码格式的实体内容进行
URL
解码的结果,而不能影响
getParameter
方法对
HTTP
请求消息的请求行中的
URL
地址后的参数进行
URL
解码的结果。