HarmonyOS 鸿蒙Next在arkTS中使用pako进行Gzip解压时报错:incorrect header check

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

HarmonyOS 鸿蒙Next在arkTS中使用pako进行Gzip解压时报错:incorrect header check

请问,在arkTS中使用pako进行Gzip解压的时候报错:incorrect header check,在线进行解压的时候是正常的,请问是为什么呢?

这是解压前的字符串:H4sIAAAAAAAE/4RTyY70JhB+lajOeBrwgs0t5xxyjtIRwlDu9owNLZZZNJp3j7Dd/Ws0h/9miiq+pT5/gjZp9g4kmKtOQMDqpEF+gk4qfdwQJCWgk8oRg5ptBOnyshDQ2c5e2Rz0Pk7JUcphAQlAYMzLgkmVZ9VsoXRs38mrN70seyGgTmiVTiCBU95UtK2o+IO1klPJWyBgjpY0r6iym99BMsFa2nUNbwmYHAK6pJxPCl3w5WFGwOKoE6qAC+qId/y9Gn4Js7jgAx8IXILPt6277htW9/eK0yuCBHbOAk0DBIog6Lp6sF09GBS8No2dWN+bvublPiqd7bx7wwnMUU3e5LipnqN6885imPJuwzK/ogrerzs0pzXrCKwYo74U3L//gsfxIM8IrPGi7vKLOzHp9fbdHYfvP6zZcBJqc8WyUZBtLQbKyPeLQ/E5D5TSc+7HCatzFlMrzll0fXPOokYLBKJBhyAZgYjOKj8+o0kR5L+gY5xj0i6py2brjlNGUrZlZ7vbu9PwH4H4EROu6tB9CKUE7mQDrjq83Kn9c85C0/FPZ4OfC5N72yO2W2F2FxXT5iMjkG/2d4HLJen6VScdQMI1pVuUp9N7ur5UPsbKWPdUDgnN9cm4023RafJhPe0jJ055zRinpxNjraBcKL0zVExQ2gjOGO16+vR8uwDZwUqY+qalNT8KbjYvxwJ+qNzoBb/g5nnOZRimjo2DNWM16gmrxgxY9dawahBDM/UjYjdxIPA6W/Tff9pHELcIgaRfe7D2h5lgLe26hrec91//BwAA//9wmgDFLQQAAA==

这是在线解压后的字符串:{“action”:“chat”,“data”:{“at_type”:0,“at_user_ids”:null,“audio_duration”:0,“audio_url”:"",“bullet_chat_id”:0,“chat_to_wall”:0,“created_at”:“2024-05-07 15:20:25”,“created_time_unix”:1715066425,“current_not_enroll”:1,“debate_release_id”:0,“debater_type”:0,“deleted_at”:"",“group_id”:384138,“group_name”:“1\u7ec4”,“id”:“6639d639ce723c4df188c832”,“is_audition”:2,“is_focus”:0,“is_wonderful”:0,“live_room_id”:320316,“message”:“OK”,“message_type”:1,“msg_current_timestamp”:1715066425,“next_not_enroll”:1,“room_teacher_id”:537901,“room_teacher_name”:"\u9000\u8bfe-\u7f57\u7684\u73ed",“scene”:1,“send_objects”:[“assistant_group_537901”,“student_group_384138”],“system_message_type”:0,“teacher_remark_name”:“Y\u7a0bAndroid”,“teacher_type”:0,“teaching_stage”:1,“updated_at”:“2024-05-07 15:20:25”,“user_avatar”:“https://xthk-oss-cdn.xthktech.cn/platform/avatar/20231120//1157027_android_1700472110680.jpg”,“user_id”:845032,“user_nickname”:“Y\u7a0bAndroid”,“user_role”:1,“uuid”:“f61b9dcb-bafe-4c9e-8dc1-9794f8bee6f2”,“video_duration”:0,“wonderful_time”:0},“msg_uuid”:1715066425228}

6 回复

我们这边没有复现报错,代码如下:

import b64 from 'base64-js'
import pako from 'pako';

@Entry
@Component
struct Test {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {

        Button('解压字符串', { type: ButtonType.Normal, stateEffect: true })
          .borderRadius(8)
          .margin(20)
          .fontSize(15)
          .fontWeight(FontWeight.Bold)
          .margin({ top: 32 })
          .padding({ left: 10 })
          .width('150')
          .height('50')
          .onClick((event?: ClickEvent) => {
            let str = "H4sIAAAAAAAE/4RTyY70JhB+lajOeBrwgs0t5xxyjtIRwlDu9owNLZZZNJp3j7Dd/Ws0h/9miiq+pT5/gjZp9g4kmKtOQMDqpEF+gk4qfdwQJCWgk8oRg5ptBOnyshDQ2c5e2Rz0Pk7JUcphAQlAYMzLgkmVZ9VsoXRs38mrN70seyGgTmiVTiCBU95UtK2o+IO1klPJWyBgjpY0r6iym99BMsFa2nUNbwmYHAK6pJxPCl3w5WFGwOKoE6qAC+qId/y9Gn4Js7jgAx8IXILPt6277htW9/eK0yuCBHbOAk0DBIog6Lp6sF09GBS8No2dWN+bvublPiqd7bx7wwnMUU3e5LipnqN6885imPJuwzK/ogrerzs0pzXrCKwYo74U3L//gsfxIM8IrPGi7vKLOzHp9fbdHYfvP6zZcBJqc8WyUZBtLQbKyPeLQ/E5D5TSc+7HCatzFlMrzll0fXPOokYLBKJBhyAZgYjOKj8+o0kR5L+gY5xj0i6py2brjlNGUrZlZ7vbu9PwH4H4EROu6tB9CKUE7mQDrjq83Kn9c85C0/FPZ4OfC5N72yO2W2F2FxXT5iMjkG/2d4HLJen6VScdQMI1pVuUp9N7ur5UPsbKWPdUDgnN9cm4023RafJhPe0jJ055zRinpxNjraBcKL0zVExQ2gjOGO16+vR8uwDZwUqY+qalNT8KbjYvxwJ+qNzoBb/g5nnOZRimjo2DNWM16gmrxgxY9dawahBDM/UjYjdxIPA6W/Tff9pHELcIgaRfe7D2h5lgLe26hrec91//BwAA//9wmgDFLQQAAA=="
            let res: Uint8Array = b64.toByteArray(str)

            let result1: ESObject = pako.ungzip(res, { to: 'string' })
            console.log("result1 = " + result1)
          })


      }
      .width('100%')
    }
    .height('100%')
  }
}

意思是要先用Base64转成Unit8Array,再用pako解压,是吧?

成功了,谢谢解答哈

使用上面方法解压出来的数据比原数据(base64格式)少10个字符是什么原因呀

下面是代码: 

const options = { to: 'string' };

 let ss = pako.ungzip(msg, options)

msg是字符串

在HarmonyOS鸿蒙Next中使用arkTS进行Gzip解压时遇到“incorrect header check”错误,通常表明解压缩过程中输入的Gzip数据头部信息有误或损坏。这可能是由于多种原因造成的,包括但不限于:

  1. 数据损坏:Gzip文件在传输或保存过程中可能已损坏。
  2. 错误的解压算法:可能使用了不匹配的解压算法或库版本。
  3. 头部信息不匹配:Gzip头部可能包含了不期望的元数据或格式。

针对此问题,可以采取以下措施:

  • 验证Gzip文件:确保Gzip文件完整且未损坏。可以尝试用其他工具打开或解压以验证文件的有效性。
  • 检查pako库版本:确保使用的pako库版本支持当前的Gzip格式。如果版本过旧,考虑升级到最新版本。
  • 检查arkTS集成:确认arkTS环境正确集成了pako库,且API调用无误。

如果上述方法均无法解决问题,可能需要更深入地检查Gzip数据的具体内容或pako库在arkTS中的具体实现。在这种情况下,建议直接联系技术团队或开发者社区寻求更专业的帮助。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部