&#x前缀(unicode编码/解码中文)JS转换方法

文章讲述了在对接后端接口时遇到的以&#x开头的中文编码问题,作者通过JavaScript的字符串处理方法,展示了如何将这种编码进行转换。首先使用replace方法配合正则表达式进行编码,然后用unescape和replace方法进行解码,恢复原中文文本。

前言

最近和后端对接口返回了&#x开头的编码,说是中文编码成这样的,看着很蒙,查了资料总结一下

1.编码

代码如下(示例):

	const str = '端午节快乐';
	const strCode = str.replace(/[^\u0000-\u00FF]/g,(a)=>escape(a).replace(/(%u)(\w{4})/gi,"&#x$2;"));
	console.log(strCode,' ---编码后---');

在这里插入图片描述

2.解码

代码如下(示例):

const res = unescape(strCode.replace(/&#x/g, '%u').replace(/;/g, ''));
console.log(res,' ---解码后---');

在这里插入图片描述


JavaScript中,如果需要将Unicode或UTF-8编码转换为汉字,可以使用内置的函数和方法来实现。以下是具体的实现方法: ### 使用 `decodeURIComponent` 解码 UTF-8 编码JavaScript中,可以通过 `decodeURIComponent` 函数将UTF-8编码的字符串(如 `%E4%B8%AD`)转换回原始的汉字字符。例如,字符串 `%E4%B8%AD` 代表的是汉字“中”: ```javascript var encodedStr = "%E4%B8%AD"; var decodedStr = decodeURIComponent(encodedStr); console.log(decodedStr); // 输出: 中 ``` 这种方法适用于处理通过 `encodeURI` 或 `encodeURIComponent` 编码后的字符串,可以将编码后的UTF-8值还原为可读的汉字字符[^1]。 ### 将 Unicode 编码转换为汉字 JavaScript支持直接通过 Unicode 编码来表示汉字。例如,`\u6C49` 表示的是汉字“汉”。如果需要动态地将 Unicode 编码转换为汉字,可以使用 `String.fromCharCode` 方法: ```javascript var unicodeCode = 0x6C49; // 以十六进制表示的 Unicode 码位 var char = String.fromCharCode(unicodeCode); console.log(char); // 输出: 汉 ``` 如果 Unicode 编码是以字符串形式提供的(例如 `"\\u6C49"`),可以先将其转换为数字形式,然后再使用 `String.fromCharCode`: ```javascript var unicodeStr = "\\u6C49"; var unicodeCode = parseInt(unicodeStr.slice(2), 16); // 去掉前缀 "\\u" 并转换为十六进制数值 var char = String.fromCharCode(unicodeCode); console.log(char); // 输出: 汉 ``` ### 手动解析 UTF-8 编码并转换为汉字 如果需要手动解析 UTF-8 编码并将其转换为汉字,需要了解 UTF-8 的编码规则。以汉字“汉”的 UTF-8 编码为例,其 Unicode 码位是 `U+6C49`,二进制表示为 `0110110001001001`。按照 UTF-8 编码规则,它会被编码为以下三个字节: 1. 将二进制拆分为两部分:`0110 110001` 和 `001001`。 2. 补充前缀和填充:`11100110 10110001 10001001`。 3. 转换为十六进制:`E6 B1 89`。 在JavaScript中,可以直接使用 `TextDecoder` 来将 UTF-8 字节码转换为汉字: ```javascript var utf8Bytes = new Uint8Array([0xE6, 0xB1, 0x89]); // UTF-8 字节码 var decoder = new TextDecoder("utf-8"); var result = decoder.decode(utf8Bytes); console.log(result); // 输出: 汉 ``` ### 总结 1. 使用 `decodeURIComponent` 可以将通过 `encodeURI` 或 `encodeURIComponent` 编码的 UTF-8 字符串还原为汉字。 2. 使用 `String.fromCharCode` 可以将 Unicode 编码转换为汉字。 3. 使用 `TextDecoder` 可以将 UTF-8 字节码直接转换为汉字。 这些方法能够有效地处理 JavaScript 文件中的编码与汉字之间的转换需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值