编写js 的 utf8编码和解码方法 不能使用encodeURIComponent() 和 decodeURIComponent()
时间: 2023-12-27 13:09:48 浏览: 63
详谈js对url进行编码和解码(三种方式的区别)
如果不能使用 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 字符,并将其拼接成一个新的字符串。
阅读全文