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

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字符内容。

最后给张截图:

在这里插入图片描述


http://www.kler.cn/a/555705.html

相关文章:

  • vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体
  • 大数据技术之HBase操作归纳
  • PyTorch 源码学习:Dispatch Autograd Operators
  • 高级SQL技术在Python项目中的应用:更进一步的数据分析与集成
  • [C#]C# winform部署yolov12目标检测的onnx模型
  • 【MCU输入捕获模式】
  • 深度优化方法汇总
  • webSocket发送实时通知实例
  • 数据结构:串( Bunch)及其实现
  • Hadoop-HA集群部署
  • go 模块管理
  • 蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
  • 【Linux网络编程】IP协议格式,解包步骤
  • List的基本功能(1)
  • 以ChatGPT为例解析大模型背后的技术
  • 数学建模:解锁智能计算的密码!
  • JVM 深入理解与性能优化
  • Qt常用控件之标签QLabel
  • 跨中心模型自适应牙齿分割|文献速递-医学影像人工智能进展
  • QT实战-基于QWidget实现的异形tip窗口