我正在尝试使用 Dart 来操作程序使用的一些系统变量。我遇到过这样的问题飞镖的utf软件包已停产,并且我还没有找到任何方法来编码为 UTF 16 Little EndianFile。写。 Dart 中是否有可以进行字节到 UTF 16 LE 转换的库?无论如何我都会使用UTF,但它不是空安全的。我可能最终会尝试使用 utf 包源代码,但我在这里检查是否有我错过的本机(或 pub)实现,因为我是 UTF 和字节转换领域的新手。
My goal:
encodeAsUtf16le(String s);
我不需要写BOM。
Dart String
s 内部使用 UTF-16。您可以使用String.codeUnits获取 UTF-16 代码单元,然后以小端形式写入它们:
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);
或者假设您正在小端系统上运行:
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.
我也觉得有必要提建议against将 UTF-16 写入磁盘,除非外部要求迫使您这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)