JS对URL转解码

日期:2015-7-14 12:50 | 标签: URL转解码 JS | 阅读:605

转解码的js方法有以下几种。

关于字符编码

  1. ASCII,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
  2. 非ASCII,很明显,其实就是!1。不同国家都有相应的标准。
  3. Unicode又称万国码, 目标是把全世界所有的字符都包含在内, 计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。所以需要支持多国语言的话就直接适用Unicode好了。 utf-8格式其实是Unicode的一种实现,是一种可变长的形式的格式,比utf-32节省空间:
    Unicode符号范围(十六进制) | UTF-8编码方式(二进制)
    --------------------|------------------------
    0000 0000-0000 007F | 0xxxxxxx
    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    
    更详细的介绍可以参考:https://www.zeroling.com/qian-tan-qian-duan-de-unicode/
    http://www.ruanyifeng.com/blog/2014/12/unicode.html

url转解码

  1. encodeURI用于对url进行转码,url的特定标识符不会被转码,一般用于url中可能存在的中文字符。 但是不使用它也不一定会出现错误,比如我使用JQ发起ajax请求获取中华万年历的天气

    http://wthrcdn.etouch.cn/weather_mini?city=深圳
    

    使用谷歌4.4能够正常返回,使用IE11却返回为空。 与之对应的一个方法是decodeURI,其对url反转码,这个不用多说。

  2. 还有一个值得注意的是另一个转码方法encodeURIComponent,顾名思义,其可以对url中部分进行转码,与encodeURI的区别是对URL中的特殊字符(保留字、基本符号、标记符号)也会进行转码,从而如:、/这些个字符也会进行转码。适用于如参数中包括url的情形。

    http://www.xxx.com/?url=www.kobepeng.com
    

    与之对应的解码方法为decodeURIComponent。

escape/unescape

escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以 及 其他非 ASCII字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是"%20 " 。 字符值大于 255 的以 %uxxxx 格式存储。 该函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串,其不会对ASCII字符进行转码。

escape与unescape 方法不能用于解码统一资源标识码 (URI)。编解该码可使用 decodeURI 和decodeURIComponent 方法;

参考

http://joebon.cc/comparing-escape-encodeURI-and-encodeURIComponent/

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际(CC BY-NC-ND 4.0
Copyright ©2013-2017 | 粤ICP备14081691号 | yipeng手工打造 | 联系方式