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

flutter将utf-8编码的字节序列转换为中英文字符串

这里遇到的问题是,我通过某种方式拿到了utf-8编码的字节序列,我只知道他们对应的是中英文字符。怎么将其转成中英文,并打印,让我对utf-8编码有了些许许的了解。

这里记录一下转换代码:

String wifiName = \xE9\xA1\xBA\xE5\xBD\xB1VIP';
print("===========>>>>> orginal wifiName:$wifiName");
wifiName = decodeUtf8String(wifiName);
print("===========>>>>> after decode wifiName:$wifiName");

处理函数:
String decodeUtf8String(String input) {
    List<int> bytes = [];
    int i = 0;
    while (i < input.length) {
      if (i + 3 < input.length && input.substring(i, i + 2) == r'\x') {
        String hex = input.substring(i + 2, i + 4);
        // 将十六进制字符转换为整数
        int byte = int.parse(hex, radix: 16);
        bytes.add(byte);
        i += 4;
      } else {
        // 处理非十六进制字符
        bytes.add(input.codeUnitAt(i));
        i++;
      }
    }
    // 使用 utf8.decode 方法将字节列表解码为字符串
    return utf8.decode(bytes);
  }

由于字符串中,是若干个以\x打头且带有两个十六进制数的string(unicode码点)。所以,需要把这每个的十六进制数的编码部分,都依次转换为字节。后续再用utf8.decode来解码。

思路:
1、遍历这个字符串;
2、如果检索到\x这样的开头部分,就获取紧跟其后的两个十六进制数,并把它转成整数,然后添加到列表中;
3、如果没有检索到\x开头的,就直接把它放到列表里;
4、最后,使用utf8.decode方法对这个列表作解码,就能得到其对应的unicode字符内容。

最后给张截图:

在这里插入图片描述

相关文章:

  • STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(二)
  • FreeRTOS学习笔记
  • Ubuntu 的RabbitMQ安装
  • Spring Boot项目中解决跨域问题(四种方式)
  • 使用WebStorm开发Vue3项目
  • AI大模型有哪些常见的应用场景
  • MySQL如何解决幻读?
  • 【git-hub项目:YOLOs-CPP】本地实现05:项目移植
  • 接口测试基础 --- 什么是接口测试及其测试流程?
  • 【深度学习】矩阵的理解与应用
  • 【vue项目如何利用event-stream实现文字流式输出效果】
  • Linux-CentOS 7安装
  • Python----数据结构(队列,顺序队列,链式队列,双端队列)
  • yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
  • 如何为自己的 PDF 文件添加密码?在线加密 PDF 文件其实更简单
  • 同程旅行对象存储实践:架构演进与未来展望
  • Linux 本地部署 Deepseek-R1 大模型!
  • Oracle 深入理解Lock和Latch ,解析访问数据块全流程
  • Java集合框架(知识整理)
  • TSMaster【第四篇:目击之术——总线测量窗口精解】
  • 上海一保租房社区亮相,首批546套房源可拎包入住
  • 戛纳打破“疑罪从无”惯例,一法国男演员被拒之门外
  • 受关税政策影响,沃尔玛将上调部分商品在美售价
  • 阿联酋与美国达成超过2000亿美元协议
  • 广西等地旱情缓解,水利部针对甘肃启动干旱防御Ⅳ级响应
  • 娃哈哈:调整产销布局致部分工厂停工,布局新产线可实现自主生产,不排除推新品牌