找回密码
 立即注册
老冷培训班汇总介绍老冷付费工具汇总介绍老鬼UI编程学院EasyClick所有产品简介EasyClick官方交流群
IOS授权价格IOS/安卓 自助提卡链接安卓-中控群控-电脑授权-购买IOSusb版投屏群控教程IOS脱机版激活教程
IOS脱机版wifi局域网脚本中控教程IOS脱机版wifi局域网群控投屏教程远程调试frp,兼容安卓/IOS热更新工具,兼容安卓/IOS脱机版老冷网盘
查看: 1846|回复: 0

[教程] 【JavaScript】JavaScript Unicode编码和解码方法

[复制链接] |主动推送

1054

主题

135

回帖

4万

积分

管理员

【导师】

积分
40640
最后登录
2024-11-24
在线时间
1650 小时

兔年勋章金牌银牌铜牌导师微信认证热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老QQ认证EC VIP学员

发表于 2023-2-4 17:14:10 | 显示全部楼层 |阅读模式

马上注册,解锁更多高级玩法

您需要 登录 才可以下载或查看,没有账号?立即注册

×
JavaScript 定义了 6 个全局方法用于 Unicode 字符串的编码和解码,说明如表所示。

JavaScript 编码和解码方法
方法说明
escape()使用转义序列替换某些字符来对字符串进行编码
unescape()对使用 escape() 编码的字符串进行解码
encodeURI()通过转义某些字符对 URI 进行编码
decodeURI()对使用 encodeURI() 方法编码的字符串进行解码
encodeURIComponent()通过某些转义字符对 URI 的组件进行编码
deencodeURIComponent()对使用 encodeURIComponent() 方法编码的字符串进行解码

escape()和unescape()方法


escape() 方法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表示十六进制的数字)的转义序列。从 \u000 到 \u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代。

示例1
[JavaScript] 纯文本查看 复制代码
var s = "JavaScript 中国";
s = escape(s);
console.log(s);  //返回字符串“JavaScript%u4E2D%u56FD”


可以使用该方法对 Cookie 字符串进行编码,以避免与其他约定字符发生冲突,因为 Cookie 包含的标点符号是有限制的。

与 escape() 方法对应,unescape() 方法能够对 escape() 编码的字符串进行解码。

示例2下面代码使用 unescape() 方法解码被 escape() 方法解码的字符串。
[JavaScript] 纯文本查看 复制代码
var s = "JavaScript 中国";
s = escape(s);  //Unicode编码
console.log(s);  //返回字符串“JavaScript%u4E2D%u56FD”
s = unescape(s);  //Unicode解码
console.log(s);  //返回字符串“JavaScript 中国”



示例3这种被解码的代码是不能够直接运行的,同学们可以使用 eval() 方法来执行它。
[JavaScript] 纯文本查看 复制代码
var s = escape('console/log("JavaScript 中国");');  //编码脚本
var s = unescape(s);  //解码脚本
eval(s);  //执行被解码的脚本



encodeURI() 和 decodeURI() 方法


ECMAScript v3.0 版本推荐使用 encodeURI() 和 encodeURIComponent() 方法代替 escape() 方法,使用 decodeURI() 和 decodeURIComponent() 方法代替 unescape() 方法。

示例4encodeURI() 方法能够把 URI 字符串进行转移处理。
[JavaScript] 纯文本查看 复制代码
var s = "JavaScript 中国";
s = encodeURI(s);
console.log(s);  //返回字符串“JavaScript%E4%B8%AD%E5%9B%BD”



encodeURI() 方法与 escape() 方法的编码结果是不同的,但是它们都不会编码 ASCII 字符。

相对而言,encodeURI() 方法更佳安全。它能够将字符转换为 UTF-8 编码字符,然后用十六进制的转义序列(形式为%xx)对生成的 1 字节、2 字节或 4 字节的字符进行编码。

使用 decodeURI() 方法可以对 encodeURI() 方法的结果进行解码。

示例5下面代码演示了如何对 URL 字符串进行编码和解码操作。
[JavaScript] 纯文本查看 复制代码
var s = "JavaScript 中国";
s = encodeURI(s);  //URI编码
console.log(s);  //返回字符串“JavaScript%E4%B8%AD%E5%9B%BD”
s = decodeURI(s);  //URI解码
console.log(s);  //返回字符串“JavaScript 中国”


encodeURICompoent() 和 decodeURICompoent()


encodeURICompoent() 与 encodeURI() 方法不同。它们的主要区别在于,encodeURICompoent() 方法假定参数是 URI 的一部分,例如,协议、主机名、路径或查询字符串。因此,它将转义用于分隔 URI 各个部分的标点符号。而 encodeURI() 方法仅把它们视为普通的 ASCII 字符,并没有转换。
示例6下面代码是 URL 字符串被 encodeURICompoent() 方法编码前后的比较。
[JavaScript] 纯文本查看 复制代码
var s = "c.biancheng.net/navi/search.asp?keyword=URI";
a = encodeURI(s);
console.log(a);
b = encodeURICompoent(s);
console.log(b);


输出显示为:
c.biancheng.net/navi/search.asp?keyword=URI
c.biancheng.net%2Fnavi%2Fsearch.asp%3Fkeyword%3DURI

第一行字符串是 encodeURI() 方法编码的结果,第二行字符串是 encodeURICompoent() 方法编码的结果。与 encodeURI() 方法一样,encodeURICompoent() 方法对于 ASCII 字符不编码,用于 分隔 URI 各种组件的标点符号,都由一个或多个十六进制的转义序列替换。

使用 decodeURICompoent() 方法可以对 encodeURICompoent() 方法编码的结果进行解码。
[JavaScript] 纯文本查看 复制代码
var s = "c.biancheng.net/navi/search.asp?keyword=URI";
b = encodeURICompoent(s);
b = decodeURICompoent(b);
console.log(b);








VIP培训班介绍汇总[安卓/IOSusb版/IOS脱机版/PHP/nodejs等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=428

付费工具介绍汇总[热更/远程调试/IOS易语言UI/拓展插件等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=430
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

想要力量吗骚年上一条 /2 下一条

关闭

免责声明|Archiver|手机版|老冷编程学院 ( 闽ICP备20013040号-2 )|网站地图

GMT+8, 2024-11-24 12:57

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表