字符串编码和解码,encodeURIComponent和decodeURIComponent用法

使用js内置函数进行编码解码

我们使用 JavaScript 中的 encodeURIComponent() 函数将 Unicode 字符串 unicodeString 编码为 UTF-8,并将结果存储在 utf8String 变量中。编码后的字符串将包含一些特殊字符和百分比编码。

然后,我们使用 decodeURIComponent() 函数对 utf8String 进行解码,将其还原为原始的 Unicode 字符串,并将结果存储在 decodedString 变量中。

示例:

// 编码(将 Unicode 字符串编码为 UTF-8)
var unicodeString = 'Hello, 你好';
var utf8String = encodeURIComponent(unicodeString);
console.log(utf8String); // 输出:Hello%2C%20%E4%BD%A0%E5%A5%BD

// 解码(将 UTF-8 编码还原为 Unicode 字符串)
var decodedString = decodeURIComponent(utf8String);
console.log(decodedString); // 输出:Hello, 你好
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果不能使用 JavaScript 提供的原生 API:encodeURIComponent() 和 decodeURIComponent(),我们可以手动实现 UTF-8 编码解码方法。以下是一个示例代码: ```javascript // UTF-8 编码 function utf8Encode(str) { let utf8Str = ''; for (let i = 0; i < str.length; i++) { const charCode = str.charCodeAt(i); if (charCode < 128) { utf8Str += String.fromCharCode(charCode); } else if (charCode < 2048) { utf8Str += String.fromCharCode((charCode >> 6) | 192); utf8Str += String.fromCharCode((charCode & 63) | 128); } else { utf8Str += String.fromCharCode((charCode >> 12) | 224); utf8Str += String.fromCharCode(((charCode >> 6) & 63) | 128); utf8Str += String.fromCharCode((charCode & 63) | 128); } } return utf8Str; } // UTF-8 解码 function utf8Decode(utf8Str) { let str = ''; let i = 0; while (i < utf8Str.length) { const charCode = utf8Str.charCodeAt(i); if (charCode < 128) { str += String.fromCharCode(charCode); i++; } else if (charCode < 224) { str += String.fromCharCode(((charCode & 31) << 6) | (utf8Str.charCodeAt(i + 1) & 63)); i += 2; } else { str += String.fromCharCode( ((charCode & 15) << 12) | ((utf8Str.charCodeAt(i + 1) & 63) << 6) | (utf8Str.charCodeAt(i + 2) & 63), ); i += 3; } } return str; } ``` 在以上代码中,utf8Encode() 函数将字符串编码为 UTF-8 格式,实现原理是遍历字符串中的每个字符,根据字符编码范围分别计算 UTF-8 编码,并将其拼接成一个新的字符串。 utf8Decode() 函数则将 UTF-8 格式的字符串解码为原始字符串,实现原理是遍历字符串中的每个字符,根据字符编码范围分别计算对应的 Unicode 字符,并将其拼接成一个新的字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smileAgain-lg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值