DartString
内部使用 UTF-16。您可以使用String.codeUnits
获取 UTF-16 代码单元,然后以 little-endian 形式编写它们:
var s = '\u{1F4A9}';
var codeUnits = s.codeUnits;
var byteData = ByteData(codeUnits.length * 2);
for (var i = 0; i < codeUnits.length; i += 1) {
byteData.setUint16(i * 2, codeUnits[i], Endian.little);
}
var bytes = byteData.buffer.asUint8List();
await File('output').writeAsBytes(bytes);
或假设您在 little-endian 系统上运行:
var s = '\u{1F4A9}';
var codeUnits = s.codeUnits;
var bytes = Uint16List.fromList(codeUnits).buffer.asUint8List();
await File('output').writeAsBytes(bytes);
另请参阅https://stackoverflow.com/a/67802971/,这是关于将 UTF-16LE 编码为String
s。
我也觉得有必要建议不要将 UTF-16 写入磁盘,除非你被外部要求强迫。