js中涉及中文的base64编码
在较新的JavaScript环境中,可以使用TextEncoder和TextDecoder来处理字符串的编码和解码。这种方法更直接地处理了字符串的二进制表示,因此更适合处理包含非ASCII字符的字符串。
function encodeToBase64(text) {
// 使用TextEncoder将字符串转换为UTF-8编码的字节流
let encoder = new TextEncoder();
let uint8 = encoder.encode(text);
// 将字节流转换为Base64编码的字符串
return btoa(String.fromCharCode(...uint8));
}
function decodeFromBase64(text) {
// 使用TextDecoder将Base64编码的字符串解码为原始字符串
let decoder = new TextDecoder();
let uint8 = Uint8Array.from(atob(text), c => c.charCodeAt(0));
return decoder.decode(uint8);
}
// 示例
let chineseText = "你好,世界";
let base64Encoded = encodeToBase64(chineseText);
console.log(base64Encoded); // 输出Base64编码后的字符串
let decodedText = decodeFromBase64(base64Encoded);
console.log(decodedText); // 输出原始的中文字符串
老版本可手动调用替换:
// 使用encodeURIComponent对字符串进行编码
// 然后将编码后的字符串转换为UTF-8编码的字节流
// 最后使用btoa进行Base64编码
return btoa(
encodeURIComponent(str)
.replace(
/%([0-9A-F]{2})/g,
function(match, p1) {
return String.fromCharCode('0x' + p1);
}
)
);

浙公网安备 33010602011771号