编码 UFT16 表情符号 returns 无效字节
Encoding UFT16 Emoji returns invalid bytes
我正在尝试在 dart 中对 Unicode 字符进行编码,但这会导致字节数组无效。
人物:
字节数:[FF, FE, 3D, D8, 25, DD]
字符串使用 BOM 编码。解码此字符串后,我可以看到该字符串被正确解析,结果在我的 IDE.
中看到了表情符号
然后我再次尝试对字符串进行编码,但是这给了我一个字节数组,我不明白:
[FF, FE, FD, FF, FD, FF]
我正在使用包 utf_convert 对字符串进行编码:
import 'package:utf_convert/utf_convert.dart' as utf;
List<int> convert(String input) {
return utf.encodeUtf16le(input, true).cast<int>();
}
这是这个包中的错误,还是我在这里监督了什么?
编辑1
我写了一些简单的测试来捕捉问题:
void main() {
var emojiString = '';
var emojiBytes = <int>[0xFF, 0xFE, 0x3D, 0xD8, 0x25, 0xDD];
test('Decode Emoji', () {
var emoji = utf.decodeUtf16le(emojiBytes);
expect(emoji, emojiString);
});
test('Encode Emoji', () {
var bytes = utf.encodeUtf16le(emojiString, true).cast<int>();
expect(bytes, emojiBytes);
});
}
函数“Decode Emoji”成功,但第二个函数“Encode Emoji”失败并断言:
预期:[255、254、61、216、37、221]实际:[255、254、253、255、253、255]
我正在尝试在 dart 中对 Unicode 字符进行编码,但这会导致字节数组无效。
人物:
字节数:[FF, FE, 3D, D8, 25, DD]
字符串使用 BOM 编码。解码此字符串后,我可以看到该字符串被正确解析,结果在我的 IDE.
中看到了表情符号然后我再次尝试对字符串进行编码,但是这给了我一个字节数组,我不明白:
[FF, FE, FD, FF, FD, FF]
我正在使用包 utf_convert 对字符串进行编码:
import 'package:utf_convert/utf_convert.dart' as utf;
List<int> convert(String input) {
return utf.encodeUtf16le(input, true).cast<int>();
}
这是这个包中的错误,还是我在这里监督了什么?
编辑1
我写了一些简单的测试来捕捉问题:
void main() {
var emojiString = '';
var emojiBytes = <int>[0xFF, 0xFE, 0x3D, 0xD8, 0x25, 0xDD];
test('Decode Emoji', () {
var emoji = utf.decodeUtf16le(emojiBytes);
expect(emoji, emojiString);
});
test('Encode Emoji', () {
var bytes = utf.encodeUtf16le(emojiString, true).cast<int>();
expect(bytes, emojiBytes);
});
}
函数“Decode Emoji”成功,但第二个函数“Encode Emoji”失败并断言:
预期:[255、254、61、216、37、221]实际:[255、254、253、255、253、255]