JavaScript 基础教程JavaScript 简介JavaScript 用法JavaScript 输出JavaScript 语法JavaScript 语句JavaScript 注释JavaScript 变量JavaScript 数据类型JavaScript 对象JavaScript 函数JavaScript 作用域JavaScript 事件JavaScript 字符串JavaScript 运算符JavaScript 比较和逻辑运算符JavaScript if...else 语句JavaScript switch 语句JavaScript for 循环JavaScript while 循环JavaScript break 和 continue 语句JavaScript typeof, null, undefinedJavaScript 类型转换JavaScript 正则表达式JavaScript 错误throw try catchJavaScript 调试JavaScript 变量提升JavaScript 严格模式 (use strict)JavaScript 使用误区JavaScript 表单JavaScript 表单验证JavaScript 验证 APIJavaScript 保留关键字JavaScript JSONjavascript :void(0) 含义JavaScript 代码规范JavaScript 函数定义JavaScript 函数参数JavaScript 函数调用JavaScript 闭包JavaScript HTML DOMJavaScript DOM- 改变 HTMLJavaScript DOM - 改变 CSSJavaScript HTML DOM 事件JavaScript DOM EventListenerJavaScript DOM 元素(节点)JavaScript 对象类型JavaScript Number 对象JavaScript 字符串(String)对象JavaScript Date 对象JavaScript Array 对象JavaScript Boolean 对象JavaScript Math 对象JavaScript RegExp 对象JavaScript window 对象JavaScript window.screen 对象JavaScript window.location 对象JavaScript window.history 对象JavaScript window.navigator 对象JavaScript 弹窗JavaScript 计时事件JavaScript CookieJS中的if和switch该如何选择?JS优化多分支结构JS中的while和for循环该如何选择?JS优化循环结构JS输出杨辉三角JS定义字符串(3种方式)JS获取字符串长度JS字符串拼接/连接(3种方式)JS字符串查找(6种方法)JS截取字符串JS字符串替换replace()JS字符串大写小写转换JS字符串比较大小JS字符串和数组之间的转换JS给字符串添加HTML标签JS去除字符串前后空格JS Unicode编码和解码JS Base64编码和解码JS在接收表单数据时过滤特殊字符JS自定义编码和解码方案

JS Unicode编码和解码

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

var s = "JavaScript 中国";

s = escape(s);

console.log(s); //返回字符串“JavaScript%u4E2D%u56FD”

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

示例2

下面代码使用 unescape() 方法解码被 escape() 方法解码的字符串。

var s = "JavaScript 中国";

s = escape(s); //Unicode编码

console.log(s); //返回字符串“JavaScript%u4E2D%u56FD”

s = unescape(s); //Unicode解码

console.log(s); //返回字符串“JavaScript 中国”

示例3

这种被解码的代码是不能够直接运行的,同学们可以使用 eval() 方法来执行它。

var s = escape('console/log("JavaScript 中国");');  //编码脚本

var s = unescape(s); //解码脚本

eval(s); //执行被解码的脚本


encodeURI() 和 decodeURI() 方法

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

示例4

encodeURI() 方法能够把 URI 字符串进行转移处理。

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 字符串进行编码和解码操作。

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() 方法编码前后的比较。

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() 方法编码的结果进行解码。

var s = "c.biancheng.net/navi/search.asp?keyword=URI";
b = encodeURICompoent(s);
b = decodeURICompoent(b);
console.log(b);


链接: https://www.fly63.com/course/7_545