HarmonyOS 鸿蒙Next util.Base64Helper().decodeSync(str) buffer.from(data).toString("utf-8"); 乱码
HarmonyOS 鸿蒙Next util.Base64Helper().decodeSync(str) buffer.from(data).toString(“utf-8”); 乱码
Tr8LkWkZ4L6hIexJ76tvQk1N152IbfhBxmvpfHn4KPvKG4Gkfd2fqdAer/QeqpUU
上面这个base64,使用下面方法解码后,是乱码,什么原因?API BUG?还是用法问题?
static utf8StringFromBase64String(str:string):string
{
try {
let data = new util.Base64Helper().decodeSync(str);
return buffer.from(data).toString(“utf-8”);
}
catch (e) {
Logs.error(“utf8StringFromBase64String faild:”+e)
return undefined
}
}
其中,上述代码中的 let data = new util.Base64Helper().decodeSync(str);,调试时,发现data值如下:
为什么 return buffer.from(data).toString(“utf-8”); 这一步就乱码了????
在HarmonyOS鸿蒙系统中,使用util.Base64Helper().decodeSync(str)
解码Base64字符串后,再通过buffer.from(data).toString("utf-8")
转换为UTF-8字符串时遇到乱码问题,通常是由于以下几个原因:
-
Base64字符串不正确:确保输入的Base64字符串是完整且正确的,没有缺失或多余的字符。
-
字符编码不匹配:原始数据在编码为Base64之前可能不是UTF-8编码。如果原始数据是其他编码(如GBK、ISO-8859-1等),解码后直接按UTF-8处理会导致乱码。
-
数据损坏:在Base64编码或传输过程中,数据可能已被损坏。
解决方法:
- 确认Base64字符串的完整性和正确性。
- 检查原始数据的编码格式,确保在编码为Base64前与解码后使用的编码一致。
- 如果可能,重新生成或获取正确的Base64编码字符串。
HarmonyOS鸿蒙Next学习地址:https://www.itying.com/category-93-b0.html