一文详解JavaScript的转码方式
更新时间:2023年09月07日 08:32:48 作者:编程三昧
JavaScript 转码是指将 JavaScript 代码从一种编码方式转换为另一种编码方式,常见的转码方式包括 URL 编码和 Base64 编码,解码是前端比较常见的一种操作,本文就给大家讲讲JavaScript转码方式
解码是前端比较常见的一种操作。
特殊符号是否编码
- escape: 不编码ASCII字母、数字、标点符号"@ * _ + - . /",对其他所有字符进行编码。
- encodeURI: 不编码ASCII字母、数字、标点符号"; / ? : @ & = + $ , #",对其他所有字符进行编码。
- encodeURIComponent: 对所有字符进行编码
转码结果
- escape: 输出字符的Unicode编码值
- encodeURI: 输出符号的utf-8形式,并且在每个字节前加上%
- encodeURIComponent: 输出符号的utf-8形式,并且在每个字节前加上%
tips:
- 但是我们知道,网页在提交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处理成空格。
注意点
为何解码最好解两次
例如笔者常用的解码方式
function decode(str) { var r = ''; try { r = decodeURIComponent(decodeURIComponent(str)); }catch(e){ try { r = decodeURIComponent(str); } catch(e) { try { r = unescape(str); //Unicode }catch(e) { r = str; } } } return r; }
- 为什么捕抓异常: 其实decodeURIComponent是会有时候会爆异常的..这个属于bug
- 为什么要尝试两次编码、一次编码、和无编码: 因为防止服务端encode两次、一次、或者无编码
- 为什么要最后unescape,因为只有这个方法能解析Unicode编码
到此这篇关于一文详解JavaScript的转码方式的文章就介绍到这了,更多相关JavaScript转码方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
setTimeout()与setInterval()方法区别介绍
计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别,下面为大家简单介绍下,希望对大家有所帮助2013-12-12基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
这篇文章主要为大家详细介绍了touch.js手势库结合zepto.js插件开发图片查看器,图片可以实现滑动、缩放、双击缩放等效果,2016-11-11
最新评论