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