您的位置:首页 > Web前端 > JavaScript

js中关于escape,encodeURI,encodeURIComponent三个函数

2011-12-23 00:00 225 查看
var var_1="% $ &";
var var_2='中';
var var_esc=escape(var_1);//%25%20%24%20%26
var var_esc2=escape(var_2);//%u4E2D
var var_unesc=unescape(var_esc);//中
var  encode_val1=encodeURI(var_1)
var  encode_val2=encodeURI(var_2)//
alert("变量'"+var_1+"'escape编码后:"+var_esc);//%25%20$%20&   可以发现 一些符号没有被转换下面有原因
alert("变量'"+var_2+"'escape编码后:"+var_esc2);//%u4E2D
alert("变量'"+var_1+"'encodeURI编码后:"+encode_val1);//
alert("变量'"+var_2+"'encodeURI编码后:"+encode_val2);//%E4%B8%AD(UTF-8的编码,具体转换方式见下面表格。。)

alert("encodeURIComponent编码后:"+encodeURIComponent(encode_val1));

alert("encodeURIComponent编码后:"+encodeURIComponent(encode_val2));%E4%B8%AD




unicode转utf-8

UCS-4编码UTF-8字节流
U+00000000 – U+0000007F0xxxxxxx
U+00000080 – U+000007FF110xxxxx 10xxxxxx
U+00000800 – U+0000FFFF1110xxxx 10xxxxxx 10xxxxxx
U+00010000 – U+001FFFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U+00200000 – U+03FFFFFF111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U+04000000 – U+7FFFFFFF1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
2.



escape:
  
    该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )
    其他所有的字符都会被转义序列替换(替换为相应的unicode值)。
    可以使用 unescape() 对 escape() 编码的字符串进行解码。
    注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
    另外: escape对0-255以外的unicode值进行编码时输出%u****格式


encodeURI(URIstring):

     该方法不会对 ASCII 字母和数字进行编码(默认为UTF-8编码),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

     该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

     decodeURI()方法来解码。。


encodeURIComponent(URIstring)
    
     该方法不会对 ASCII 字母和数字进行编码(默认为UTF-8),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

      其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

     decodeURIComponent()解码

     例如参数中有#?这样的数值怎么办呢?用encodeURIComponent方法。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: