第二百六十一回 convert包


我们在上一章回中介绍了"characters包"相关的内容,本章回中 将介绍convert包,闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在上一章回中介绍了字符相关的内容,本章回中介绍的内容也与字符有关。我们都知道字符有不同的编码,比如常用的ASCII码,以及更加通用的UTF8编码。在项目中会遇到转换字符需编码的需求,怎么办呢?本章回中将介绍具体的转换方法。

2. 使用方法

在dart中可以使用convert包来实现转移字符编码的功能,该包是dart官方提供的,我们可以放心使用,该包提供了常用的编码类型,比如utf8,ascii等。

我们可以单独在yaml配置文件中导入这个包,也可以不导入包,因为flutter官方的SDK中已经包含这个包。我们只需要在头文件中引入包就可以。import 'dart:convert';在接下来的小节中,我们分别介绍utf8和ascii两种常用类型的编码转换。

2.1 utf8编码转换

convert包提供了静态方法:encodedecode.通过这两个方法可以实现字符串与utf8编码之间的转换。下面是这两个方法的函数原型:

  /// The input is encoded as if by `encoder.convert`.
  T encode(S input) => encoder.convert(input);

  /// Decodes [encoded] data.
  ///
  /// The input is decoded as if by `decoder.convert`.
  S decode(T encoded) => decoder.convert(encoded);

这个是抽象类Codec中的方法,实现类会实现这些抽象方法,下面是Utf8Decoder这个实现类对conver方法的实现:

  String convert(List<int> codeUnits, [int start = 0, int? end]) {
    // Allow the implementation to intercept and specialize based on the type
    // of codeUnits.
    var result = _convertIntercepted(_allowMalformed, codeUnits, start, end);
    if (result != null) {
      return result;
    }

    return _Utf8Decoder(_allowMalformed).convertSingle(codeUnits, start, end);
  }

感兴趣的看官可以分析一下源代码的含义,不感兴趣的可以跳过源代码,直接使用包中的方法就可以。

2.2 ascii编码转换

convert包提供了静态方法:encodedecode.通过这两个方法可以实现字符串与ascii编码之间的转换。这现个方法的函数原型在上一个小节中介绍过,不过它的实现内容在AsciiCodec这个实现类中,我们在这里不列出了,大家可以查看官方的源代码文件。

3. 示例代码

import 'package:convert/convert.dart';

void main(List<String> args) {
  // Creates a Codec that converts a UTF-8 strings to/from percent encoding
  final fusedCodec = utf8.fuse(percent);

  final input = args.isNotEmpty ? args.first : 'ABC 123 @!(';
  print(input);
  final encodedMessage = fusedCodec.encode(input);
  print(encodedMessage);

  final decodedMessage = fusedCodec.decode(encodedMessage);
  assert(decodedMessage == input);
}

上面的示例代码演示了字符串与utf8编码之间的转换,大家从中可以看到encode和decode方法的使用方法。该代码来自官方文档,建议大家自己动手去实践,通过运行程序来查看程序的运行结果。

此外,代码中没有演示字符串和ascii编码之间的转换,不过它的用法和示例代码中的十分相似,因此我们不再举例说明。

4. 内容总结

最后,我们对本章回中的内容做一个全面的总结:

  • 我们可以使用convert包来转换字符串的编码方式;
  • 包中支持常用的字符方式,比如ascii编码和utf-8编码;
  • 包中的转换方法主要有两个:encode和decode,它们都是静态方法;

看官们,与"convert包"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值