编写js 的 utf8编码和解码方法
时间: 2024-02-20 10:56:08 浏览: 227
编写 JavaScript 的 UTF-8 编码和解码方法可以使用 JavaScript 提供的原生 API:encodeURIComponent() 和 decodeURIComponent()。这两个函数可以将字符串编码为 UTF-8 格式和解码回原始字符串。
下面是一个示例代码:
```javascript
// UTF-8 编码
function utf8Encode(str) {
return encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode(parseInt(p1, 16));
});
}
// UTF-8 解码
function utf8Decode(str) {
return decodeURIComponent(encodeURIComponent(str));
}
```
在以上代码中,utf8Encode() 函数将字符串编码为 UTF-8 格式,实现原理是将字符串传给 encodeURIComponent() 函数,然后将其返回值中的每个 %xx 转换为相应的 Unicode 字符。
utf8Decode() 函数则将 UTF-8 格式的字符串解码为原始字符串,实现原理是先将字符串传递给 encodeURIComponent() 函数,再将其返回值传递给 decodeURIComponent() 函数。
相关问题
编写js 的 utf8编码和解码方法 不能使用encodeURIComponent() 和 decodeURIComponent()
如果不能使用 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 字符,并将其拼接成一个新的字符串。
阅读全文