You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Dart中如何将字符串编码为UTF-16 Little Endian格式?

解决方案

原生无依赖实现(推荐)

你完全不需要引入第三方包,Dart内置的类型已经可以直接实现UTF-16 LE编码,且天然支持空安全,也不会写入BOM,示例代码如下:

import 'dart:typed_data';

Uint8List encodeAsUtf16le(String s) {
  // Dart字符串的codeUnits本身就是UTF-16码元序列
  final utf16CodeUnits = s.codeUnits;
  final resultBytes = Uint8List(utf16CodeUnits.length * 2);
  final byteData = resultBytes.buffer.asByteData();
  for (int i = 0; i < utf16CodeUnits.length; i++) {
    // 按小端序写入每个16位码元
    byteData.setUint16(i * 2, utf16CodeUnits[i], Endian.little);
  }
  return resultBytes;
}

你可以直接用这个函数的返回值调用File.writeAsBytes完成写入,示例如下:

import 'dart:io';

Future<void> writeUtf16leFile(String filePath, String content) async {
  final utf16leBytes = encodeAsUtf16le(content);
  await File(filePath).writeAsBytes(utf16leBytes);
}

第三方包实现

如果你需要处理更多字符编码转换场景,也可以直接使用pub平台上的空安全编码类库,比如charset_converter、utf16,都封装了现成的UTF-16 LE编解码能力,直接调用对应API即可。

内容的提问来源于stack exchange,提问作者Jack1221

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:45:06