日期:2014-05-16  浏览次数:20413 次

Javascript的URL编码问题

JavascriptURL编码问题。

Javascript的常用的编码方式:

encodeURIComponent(stringvalue)decodeURIComponent(stringvalue)

encodeURI(stringvalue)decodeURI(stringvalue)

escape(stringvalue) unescape(stringvalue)

现在escape(stringvalue) unescape(stringvalue)已经从ECMAScript v3 已从标准中删除了 ,并反对使用它,因此应该用 decodeURI() decodeURIComponent() 取而代之。

?

Java的编码解码:

URLEncoder.encode(stringvalue,"UTF-8")

对应

encodeURIComponent(stringvalue)

Java解码

URLDecoder.decode(stringvalue,"UTF-8")

对应

decodeURIComponent(stringvalue)

?

淘宝用的框架是WEBXWebX中会把所有的参数按配置进行一次解码,淘宝大多应用系统都是GBK的编码,所以会存在Javascript编码后传给服务端拿到的是错误的编码。原因:

JavascriptAjax请求时:encodeURIComponent()UTF-8编码WebXGBK编码解码出错。解决:encodeURIComponent(encodeURIComponent(stringvalue))两次编码后传送到服务端,WEBX解码后是正常的UTF-8编码的字符串,在用URLDecoder.decode(stringvalue,"UTF-8")进行一次解码得到最后正确编码的汉字。这个在WEB旺旺和阿里云的旺旺服务器的聊天记录的查看是这样的做的。

原来还有很多遗留的系统的前端JS