在開發網站前端功能上,或許有機會遇到需要將字串轉換成 Base64 的需求。
瀏覽器有提供了一個很簡單的方法 btoa()
讓你輕鬆地轉換完成。
但現實永遠就不是那麼簡單的,因為他只支援將 ASCII 字串進行轉換,如果你直接將中文內容傳送給他進行處理程式就死在那邊給你看了。
所以就需要辛苦的繞路來解決問題,讓瀏覽器不要太聰明的將中文字視為中文字去處理就好啦。
function strToBase64(str) {
try {
const bytes = new TextEncoder().encode(str);
let rs = [],
batch = 32767;
for (let i = 0; i < bytes.length; i += batch) {
rs.push(String.fromCodePoint.apply(null, bytes.slice(i, i + batch)));
}
return btoa(rs.join(''));
} catch (er) {
}
}
更新紀錄
2024/06/08 修正如果文字內容過常導致無法轉換問題。