做网站的意义大不大,哈尔滨站建筑,建设门户网站请示,谷歌推广服务1、首先是encodeURI和encodeURIComponent#xff1b; 从名字可以清晰的看出他两都是主要用于url编码的#xff0c;那之间有什么区别呢#xff1f;唯一区别就是编码的字符范围#xff0c;其中 encodeURI方法不会对下列字符编码 ASCII字母、数字、~!#$*():/,;?#x…1、首先是encodeURI和encodeURIComponent 从名字可以清晰的看出他两都是主要用于url编码的那之间有什么区别呢唯一区别就是编码的字符范围其中 encodeURI方法不会对下列字符编码 ASCII字母、数字、~!#$*():/,;? encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*() 很明显encodeURIComponent要比encodeURI编码更多东西也就是更加严格 var urlhttps://www.baidu.com?name123sexman;var test2encodeURI(url);var testencodeURIComponent(url);console.log(test2)console.log(test) 上面简单的例子也很明显。他两相对应的解码为decodeURI()、decodeURIComponent() 2、btoa与atob WindowOrWorkerGlobalScope.btoa() 从 String 对象中创建一个 base-64 编码的 ASCII 字符串其中字符串中的每个字符都被视为一个二进制数据字节。简单来说就是base64编码。 var urlhttps://www.baidu.com;var test2window.btoa(url);console.log(test2) //aHR0cHM6Ly93d3cuYmFpZHUuY29t 从上面的例子可以看出已经被编码成base64格式但当我们采用中文时会发现报错 var url深圳南山;var test2window.btoa(url);console.log(test2) 我们运行后会发现报错如下图 这是为什么呢由于这个函数将每个字符视为二进制数据的字节而不管实际组成字符的字节数是多少所以如果任何字符的码位超出 0x00 ~ 0xFF 范围则会引发 InvalidCharacterError 异常。请参阅 Unicode_字符串 该示例演示如何编码字符数超出 0x00 ~ 0xFF 范围的字符串我们通过以下方式完成编码 var url深圳南山;function utf8_to_b64( str ) {return window.btoa(unescape(encodeURIComponent( str )));}function b64_to_utf8( str ) {return decodeURIComponent(escape(window.atob( str )));}console.log(utf8_to_b64(url)) //5rex5Zyz5Y2X5bGxconsole.log(b64_to_utf8(utf8_to_b64(url))) //深圳南山 在js引擎内部,encodeURIComponent(str)相当于escape(unicodeToUTF8(str))所以可以推导出unicodeToUTF8(str)等同于unescape(encodeURIComponent(str)) 3、escape() escape() 函数可对字符串进行编码该方法不会对 ASCII 字母和数字进行编码也不会对下面这些 ASCII 标点符号进行编码 * - _ . / 。其他所有的字符都会被转义序列替换。 var url深圳南山/3232;var testescape(url)console.log(test) //%u6DF1%u5733%u5357%u5C71/%263232 unescape() 函数可对通过 escape() 编码的字符串进行解码。不过ECMAScript v3 已从标准中删除了 unescape() 函数并反对使用它因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。转载于:https://www.cnblogs.com/yuanzhiguo/p/9431466.html