js实现转码
转码实现方法
在JavaScript中,常见的转码需求包括URL编码、Base64编码、Unicode转码等。以下是几种常见转码场景的实现方法。
URL编码
使用encodeURIComponent()对URL参数进行编码,确保特殊字符被正确处理:
const originalString = "Hello World! 你好";
const encodedString = encodeURIComponent(originalString);
console.log(encodedString); // 输出:Hello%20World!%20%E4%BD%A0%E5%A5%BD
使用decodeURIComponent()进行解码:
const decodedString = decodeURIComponent(encodedString);
console.log(decodedString); // 输出原始字符串
Base64编码
使用btoa()进行Base64编码:
const base64Encoded = btoa("Hello World");
console.log(base64Encoded); // 输出:SGVsbG8gV29ybGQ=
使用atob()进行Base64解码:
const base64Decoded = atob(base64Encoded);
console.log(base64Decoded); // 输出原始字符串
注意:btoa和atob仅支持ASCII字符,处理非ASCII字符需要先转换:
const utf8ToBase64 = (str) => btoa(unescape(encodeURIComponent(str)));
const base64ToUtf8 = (str) => decodeURIComponent(escape(atob(str)));
Unicode转码
将字符串转换为Unicode编码:
function toUnicode(str) {
return str.split('').map(char =>
'\\u' + char.charCodeAt(0).toString(16).padStart(4, '0')
).join('');
}
console.log(toUnicode("你好")); // 输出:\u4f60\u597d
将Unicode编码转回字符串:
function fromUnicode(unicodeStr) {
return unicodeStr.replace(/\\u[\dA-F]{4}/gi,
match => String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16))
);
}
字符集转换
使用TextEncoder和TextDecoder处理不同字符集:

const encoder = new TextEncoder();
const decoder = new TextDecoder();
const utf8Array = encoder.encode("你好");
const decodedStr = decoder.decode(utf8Array);
注意事项
- URL编码时,
encodeURI()不会编码/?:@&=+$#等保留字符,而encodeURIComponent()会编码所有非标准字符 - Base64编码的字符串可能包含
+、/和=等特殊字符,在URL中使用时需要替换:const urlSafeBase64 = base64Encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); - 处理大文件转码时建议使用流式处理,避免内存问题






