1
Java中汉字在String中编码为Unicode. java.lang.String.getBytes(String
charsetName)会进行重新编码,所以url.getBytes("unicode").length与url.getBytes("utf8").length结果可能不一样
2
java.net.URLEncoder.encode(String s, String charsetName), 对以下字符之外的字符做转码(‘a-z‘,
‘A-Z‘, ‘0-9‘, ‘-‘, ‘_‘, ‘.‘, ‘*‘), 特殊的是‘ ‘会被替换成‘+‘.
其他字符,包括汉字,会被替换成%xxx。
3
URL中的参数value值不能出现:‘+‘ ‘ ‘ ‘/‘ ‘#‘ ‘&‘ ‘=‘ ‘?‘ ‘%‘, 如果要出现的话需要转码。
4
理论上来说url中的paramValue出现2中安全字符外的其他字符都会被认为是非法URL,一般浏览器会自动encode.
servlet中调用request.getParameter();方法会自动解码,有一个比较trick的地方是如果要根据原有url重新拼新url,String
paramValue = request.getParameter(paramKey);一定要对paramValue
encode一下才能拼接,掉过坑
5
base64是否可以代替URLEncoder.encode.
不可以。编码后的64个字符集:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
比如最后编码为+,request.getParameter();方法自动解码后变成空格
备忘一下url相关的编码,布布扣,bubuko.com
备忘一下url相关的编码
原文:http://www.cnblogs.com/daimin/p/3691657.html