js将cookie中文进行转码
背景
- 登录操作设置Cookie
Cookie cookie = null; try { cookie = new Cookie(ConfigData.PicLabelCook, URLEncoder.encode(username, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
- 登录后在页面中js将cookie取出并写到页面
- 期望效果
- 实际效果
- 期望效果
错误分析与解决方案
- js中获取的Cookie值并没有进行转码
- 用decodeURI解码
- 用escape编码
- 用decodeURI解码
- 看到escape的结果之后,突发奇想--将escape和decodeURI进行结合使用
decodeURI(escape(cookie_value))
总结
- cookie中的值先escape编码【该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。】
- 然后用decodeURI解码
- 也就是说明获取Cookie值的方法用过unescape
function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) { return unescape(arr[2]); } else { return null; } }