HarmonyOS 鸿蒙Next API 9 Base解码是乱码

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

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

6 回复

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

回到顶部