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);
			}
		)
);
posted @ 2025-12-18 14:54  庶旁  阅读(5)  评论(0)    收藏  举报