HarmonyOS 鸿蒙Next API 9 Base解码是乱码
HarmonyOS 鸿蒙Next API 9 Base解码是乱码
java版本的Base64解码如下:
responseStr = new String(Base64.decode(resultStr, Base64.NO_WRAP));
然后这个是我现在写的鸿蒙:
let base64Helper = new util.Base64Helper();
let bytes = await base64Helper.decode(resultStr);
let decoder = util.TextDecoder.create('utf-8')
let responseStr = decoder.decodeWithStream(bytes)
但是是乱码
以下是模拟的需要解码的数据: “eyJyZXRjb2RlIjoiMDAwMSIsInJldG1zZyI6InNpZ27nrb7lkI3kv6Hmga/plJnor68ifQ==”
用这个在线工具可以解码的: Base64 编码/解码 - 锤子在线工具 (toolhelper.cn)
更多关于HarmonyOS 鸿蒙Next API 9 Base解码是乱码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Api 9可以这样:
let resultStr = '{"retcode":"0001","retmsg":"sign签名信息错误"}'
let base64Helper = new util.Base64Helper()
let encoder = new util.TextEncoder() // 可能是bug,不能使用new util.TextEncoder('utf-8')
let encodeArray = encoder.encodeInto(resultStr)
let str = base64Helper.encodeToStringSync(encodeArray)
console.log('编码结果:' + str)
let decodeArray = base64Helper.decodeSync(str)
let decoder = util.TextDecoder.create('utf-8')
let responseStr = decoder.decodeWithStream(decodeArray)
console.log('解码结果:' + responseStr)
更多关于HarmonyOS 鸿蒙Next API 9 Base解码是乱码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
找到原因了,是因为接口返回的base64文本前后多了双引号?但是放在浏览器打开是没有双引号的,以下代码的value前后多了双引号
async function httpRequest(url: string, method: http.RequestMethod, params?: Object): Promise<http.HttpResponse> {
let httpRequest = http.createHttp();
let responseResult = httpRequest.request(url, {
method: method,
readTimeout: HttpConstant.HTTP_READ_TIMEOUT,
header: {
'Content-Type': ContentType.JSON
},
connectTimeout: HttpConstant.HTTP_READ_TIMEOUT,
extraData: params
});
// 处理数据并返回
return responseResult.then((value: http.HttpResponse) => {
return value;
}).catch((error: BusinessError) => {
// 抛出异常让外面捕获
throw error;
});
}
官方的base解码还有 编码器 有问题的, 我上星期才知道…
所以后来这个你是怎么解决的呢,
没解决, 等新的api10,
针对“HarmonyOS 鸿蒙Next API 9 Base解码是乱码”的问题,可能的原因及解决方案如下:
在HarmonyOS中,如果遇到Next API 9 Base解码出现乱码的情况,这通常是由于字符编码不匹配或数据损坏导致的。首先,确认你使用的解码方法和原始数据的编码方式是否一致。例如,如果原始数据是以UTF-8编码的,那么解码时也应当使用UTF-8。
此外,检查数据在传输或存储过程中是否发生了损坏。数据损坏可能导致解码时出现乱码。确保数据的完整性和正确性对于避免此类问题至关重要。
如果确认编码方式和数据完整性都没有问题,但乱码问题依旧存在,那么可能是API本身存在bug或者你的使用方式有误。此时,可以尝试查阅HarmonyOS的官方文档或开发者社区,看看是否有其他开发者遇到并解决了类似的问题。
如果以上方法都不能解决问题,那么可能需要更深入地调查问题的根源。这可能涉及到对HarmonyOS系统的深入理解,或者需要华为开发者的专业支持。
如果问题依旧没法解决请联系官网客服,官网地址是: https://www.itying.com/category-93-b0.html