http urlencode:
url只允许使用ascii字符集;
允许的字符包括:1,字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9";2,特殊字符 "."、"-"、"*" 和 "_";。
其他任何字符需要urlcoding。
字符首先根据编码转换,然后每2个字节前面放置一个%号;
空格转换成+号。
所使用的编码是html Content-type中的编码,通常为UTF-8。
jquery $(selector).serialize() 自动 urlencode。
tomcat中编码设置:
URIEncoding:urldecode时使用的编码,默认为 iso-8859-1,线上配置为 gbk。
useBodyEncodingForURI:Content-type中设置的编码当作urldecode的编码;如果调用 request.setCharacterEncoding,起同样的作用。线上配置为 true。
servlet编码设置:
request.setCharacterEncoding:设置 http request body 的编码;在读取第一个参数前设置。
struts2编码设置
<constant name="struts.i18n.encoding" value="UTF-8" />;相当于调用 request.setCharacterEncoding("utf-8")
针对不同的请求设置不同的编码:
struts2不能动态配置,需要重写StrutsPrepareAndExecuteFilter,注释掉第77行, prepare.setEncodingAndLocale(request, response);
自定义个一个 servlet filter,根据请求动态设置编码;
velocity编码设置:
input.encoding=GBK
output.encoding=GBK
output.encoding= 设置 response 的编码