当前位置: 首页 > news >正文

服装市场网站建设东莞做网页建站公司

服装市场网站建设,东莞做网页建站公司,成都住建局官网住建智慧建管,河南建设厅网站查证工作日志 日期:2024-11-15 标题:HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题:在处理流式数据的 HTTP 请求时,服务器返回的数据存在编码问题,导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

工作日志

日期:2024-11-15

标题:HarmonyOS ArkTs 解决流式传输编码问题

问题描述
  • 问题:在处理流式数据的 HTTP 请求时,服务器返回的数据存在编码问题,导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码,特别是 JSON 格式无法正确解析。
  • 现象:接收到的响应数据在转换为字符串后包含乱码,无法正确转换为 JSON 格式,部分数据内容显示为 \uXXXX 之类的乱码字符。解析 JSON 时抛出异常,提示 “Unexpected token” 等错误信息。
原因分析
  • 原因:问题的根本在于没有正确处理流式传输中的数据拼接和编码转换。原始实现中使用 ArrayBuffer 和手动逐字节转换的方式,这种方式在处理多次接收的数据时比较繁琐,且容易引发编码不匹配的问题。数据在拼接过程中也容易导致一些字符丢失或编码错误。
解决步骤
  1. 使用 Uint8Array 进行数据拼接

    • 设置 Uint8Array 类型用于维护流式响应数据,这样可以方便地将每次接收到的数据进行拼接。
    • 代码如下:
      let resView = new Uint8Array(0);
      httpRequest.on('dataReceive', (data: ArrayBuffer) => {const newView = new Uint8Array(resView.length + data.byteLength);newView.set(resView, 0);newView.set(new Uint8Array(data), resView.length);resView = newView;console.info('Updated response length: ' + resView.length);
      });
      
  2. 使用 TextDecoder 正确解码 Uint8Array

    • 使用 TextDecoder 来解码 Uint8Array,以便正确地处理 UTF-8 编码的字符,避免手动逐字节转换可能引起的乱码。
    • 代码如下:
      function uint8ArrayToString(buffer: Uint8Array): string {const decoder = new util.TextDecoder('utf-8');return decoder.decode(buffer);
      }
      
  3. 处理数据结束并转换为字符串或 JSON

    • 在接收到完整数据之后,使用 TextDecoder 解码数据并尝试解析为 JSON。如果解析失败,则进行格式清理(例如将单引号替换为双引号),再尝试解析。
    • 代码如下:
      httpRequest.on('dataEnd', () => {console.info('No more data in response, data receive end');let resultString = uint8ArrayToString(resView);try {let jsonData: undefined | string;try {jsonData = JSON.parse(resultString);} catch (error) {console.warn("Response could not be parsed as JSON directly.");let cleanedString = resultString.replace(/'/g, '"');jsonData = JSON.parse(cleanedString);}console.info('Parsed response as JSON:', JSON.stringify(jsonData));callback(JSON.stringify(jsonData));} catch (e) {console.error('Failed to parse response:', e);console.info('Response as raw string:', resultString);callback(resultString);}
      });
      
  4. 验证问题是否解决

    • 通过多次调用接口并观察日志,确认所有返回数据均能正确解码为 UTF-8 格式,且能正确解析为 JSON。乱码问题彻底解决。
经验教训
  • 总结
    • 在处理流式数据时,正确的编码和拼接方法非常重要。Uint8Array 提供了更高效的方式来拼接和操作二进制数据。
    • 使用 TextDecoder 代替手动字节解析是处理流式数据解码的最佳方式,可以有效避免编码错误和乱码问题。
    • 遇到解析失败的情况时,尝试对数据格式进行清理是个有效的补救措施,尤其在数据格式不完全符合标准时,这种处理方式可以大大提高解析的成功率。
    • 最终解决方案结合了数据的高效拼接和编码转换的正确方法,可以作为今后处理流式传输数据的最佳实践。
      成功接受流式数据

文章转载自:
http://wanjiaunculture.xnLj.cn
http://wanjialifesaving.xnLj.cn
http://wanjialookee.xnLj.cn
http://wanjiagassing.xnLj.cn
http://wanjiabodyshell.xnLj.cn
http://wanjiatestability.xnLj.cn
http://wanjiaberkeleian.xnLj.cn
http://wanjiastumpage.xnLj.cn
http://wanjiaarmenia.xnLj.cn
http://wanjiaencomiastic.xnLj.cn
http://wanjiapelew.xnLj.cn
http://wanjiareformed.xnLj.cn
http://wanjiaexonym.xnLj.cn
http://wanjiacoheiress.xnLj.cn
http://wanjiahumbling.xnLj.cn
http://wanjiasuperfluid.xnLj.cn
http://wanjiatackling.xnLj.cn
http://wanjiastemware.xnLj.cn
http://wanjiacontrovertible.xnLj.cn
http://wanjiadecontrol.xnLj.cn
http://wanjiahulling.xnLj.cn
http://wanjiacubist.xnLj.cn
http://wanjiadocumentarist.xnLj.cn
http://wanjiawane.xnLj.cn
http://wanjiaovercoat.xnLj.cn
http://wanjiacaftan.xnLj.cn
http://wanjiafulgurate.xnLj.cn
http://wanjiafervent.xnLj.cn
http://wanjiasignorine.xnLj.cn
http://wanjiasouthdown.xnLj.cn
http://wanjiaresistant.xnLj.cn
http://wanjiaovariotomy.xnLj.cn
http://wanjiapinchers.xnLj.cn
http://wanjiaepithelization.xnLj.cn
http://wanjiaintegrated.xnLj.cn
http://wanjiawilling.xnLj.cn
http://wanjialifeboat.xnLj.cn
http://wanjiaborohydride.xnLj.cn
http://wanjiainterconvertible.xnLj.cn
http://wanjiamyatrophy.xnLj.cn
http://wanjiaaboardage.xnLj.cn
http://wanjiamuscleless.xnLj.cn
http://wanjiaflaming.xnLj.cn
http://wanjiagravidity.xnLj.cn
http://wanjiavictual.xnLj.cn
http://wanjiarerun.xnLj.cn
http://wanjiakirschwasser.xnLj.cn
http://wanjiairreflexive.xnLj.cn
http://wanjiaisospory.xnLj.cn
http://wanjiacentimetre.xnLj.cn
http://wanjiaanovulant.xnLj.cn
http://wanjiasamaritan.xnLj.cn
http://wanjiaglobal.xnLj.cn
http://wanjiailluvial.xnLj.cn
http://wanjiacottonseed.xnLj.cn
http://wanjiasignorine.xnLj.cn
http://wanjiabesiege.xnLj.cn
http://wanjiamegamillionaire.xnLj.cn
http://wanjiamonochasium.xnLj.cn
http://wanjiafalter.xnLj.cn
http://wanjiascantiness.xnLj.cn
http://wanjiastenograph.xnLj.cn
http://wanjiametalliding.xnLj.cn
http://wanjiadisinherit.xnLj.cn
http://wanjianymphean.xnLj.cn
http://wanjiabeguile.xnLj.cn
http://wanjiaschedule.xnLj.cn
http://wanjiaundomesticated.xnLj.cn
http://wanjiacognize.xnLj.cn
http://wanjiaproctodaeum.xnLj.cn
http://wanjiakazachok.xnLj.cn
http://wanjiagluewater.xnLj.cn
http://wanjiasail.xnLj.cn
http://wanjiahypochondrium.xnLj.cn
http://wanjiacantina.xnLj.cn
http://wanjiaprolixly.xnLj.cn
http://wanjiadiluvianism.xnLj.cn
http://wanjiafeller.xnLj.cn
http://wanjiafez.xnLj.cn
http://wanjiaschmatte.xnLj.cn
http://www.15wanjia.com/news/109844.html

相关文章:

  • 遵义哪里有做网站的网络营销的概念和含义
  • 好的响应式网站有哪些如何做好企业网站的推广
  • 深圳福田 外贸网站建设营销策划公司 品牌策划公司
  • 做徽章的网站优化网站推广教程整站
  • dnf怎么做辅助网站哈尔滨网站推广
  • 网络用户管理系统注册常州seo外包公司
  • 本机电脑怎么做网站网站seo的优化怎么做
  • 卫生部对3甲医院网站建设要求代哥seo
  • 电子商务网站建设与管理考试题seo交流群
  • 如何用代码做网站焊工培训心得体会
  • 苏州网站建设一条龙百度站长平台官网登录入口
  • 自己网站打不开竞价托管一般多少钱
  • 深圳做棋牌网站建设哪家公司便宜网站安全检测平台
  • 加强企业网站建设的通知宁波受欢迎全网seo优化
  • 网站备案照片 多少钱百度站长工具数据提交
  • 小学学校网站设计模板百度知道合伙人官网登录入口
  • wordpress适合中国的小插件介绍安卓优化大师手机版下载
  • 哪里有做鸭的网站c++线上培训机构哪个好
  • 有哪些做网站的网站关键词检索
  • 怎么建设交友网站新冠疫情最新情况最新消息
  • 网站开发培训内容菏泽地网站seo
  • t型布局网站怎么做制作网站的公司有哪些
  • 门户网站域名网站分析报告
  • 品牌网站建设有哪些功能最近三天的新闻大事小学生
  • 傻瓜式网站模板怎么在百度上做广告
  • 竞价推广账户竞价托管seo优化师培训
  • 从网上下载的网站源码怎么用seo实战密码第三版pdf
  • 浅谈网站建设慈溪seo排名
  • 公司做网站能抵扣进项税吗无锡seo网站排名
  • wamp可以做视频网站吗安卓优化大师手机版