本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。
一、base64編碼解析
在JavaScript中解析base64編碼可以使用atob()函數,它會將base64字元串解碼為原始字元串:
function decodeBase64(string) {
return atob(string);
}
console.log(decodeBase64('SGVsbG8gV29ybGQh'));
//Output: "Hello World!"
但是atob()函數只能解析ASCII字元,如果要解析非ASCII字元,需要藉助另一個函數——decodeURIComponent():
function decodeBase64(string) {
return decodeURIComponent(atob(string).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
console.log(decodeBase64('5Zue5Lu257K85aSp5YyW56CB5Lqk5Y+R5YWz'));
//Output: "你好,世界!"
以上代碼將base64字元串’5Zue5Lu257K85aSp5YyW56CB5Lqk5Y+R5YWz’解析為utf-8編碼的”你好,世界!”。
二、unit格式轉換
unit是JavaScript中表示Unicode字元的方法,對於非ASCII字元,可以通過轉義表示:
var helloWorld = '\u0048\u0065\u006c\u006c\u006f \u0057\u006f\u0072\u006c\u0064\u0021';
console.log(helloWorld);
//Output: "Hello World!"
以上代碼將Unicode編碼表示為unit格式的字元串。
如果要將一個字元串轉換為unit格式,可以用String對象的charCodeAt()方法獲取每個字元的Unicode編碼,並將其轉化為16進位:
function toUnit(string) {
var result = "";
for (var i = 0; i < string.length; i++) {
var charCode = string.charCodeAt(i).toString(16);
result += '\\u' + ('0000' + charCode).slice(-4);
}
return result;
}
console.log(toUnit("Hello World!"));
//Output: "\u0048\u0065\u006c\u006c\u006f \u0057\u006f\u0072\u006c\u0064\u0021"
以上代碼將”Hello World!”轉成了unit格式的字元串。
三、結合使用
了解了base64解碼和unit轉換的方法後,我們可以將它們結合起來,將base64編碼的非ASCII文本轉換為unit格式的字元串:
function base64ToUnit(string) {
var decoded = decodeURIComponent(atob(string).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
var result = "";
for (var i = 0; i < decoded.length; i++) {
var charCode = decoded.charCodeAt(i).toString(16);
result += '\\u' + ('0000' + charCode).slice(-4);
}
return result;
}
console.log(base64ToUnit('5Zue5Lu257K85aSp5YyW56CB5Lqk5Y+R5YWz'));
//Output: "\u4f60\u597d\uff0c\u4e16\u754c\uff01"
以上代碼將base64編碼的”你好,世界!”轉成了unit格式的字元串。需要注意的是,轉義字元需要使用雙反斜杠”\\\\”來表示,否則轉義字元會被當做普通字元處理。
原創文章,作者:KNLLK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/375139.html