#dart #encoding #utf-8 #decoding #converters
#дротик #кодирование #utf-8 #декодирование #преобразователи
Вопрос:
Как я могу кодировать, а затем декодировать одну и ту же строку с помощью UTF-8. Я пытаюсь декодировать строку в формате UTF-8
У меня есть следующая строка UTF-8:-
Listlt;intgt; utf8Bytes = [ 0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9, 0x72, 0xc3, 0xb1, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3, 0xae, 0xc3, 0xb6, 0xc3, 0xb1, 0xc3, 0xa5, 0xc4, 0xbc, 0xc3, 0xae, 0xc5, 0xbe, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3, 0xae, 0xe1, 0xbb, 0x9d, 0xc3, 0xb1 ];
Есть ли какой-либо способ декодировать эту строку UTF-8 в Dart? Любая помощь будет признательна.
Ответ №1:
Используется utf8.decode()
для декодирования байтов в кодировке UTF8 в строку Dart:
Listlt;intgt; utf8Bytes = [ 0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9, 0x72, 0xc3, 0xb1, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3, 0xae, 0xc3, 0xb6, 0xc3, 0xb1, 0xc3, 0xa5, 0xc4, 0xbc, 0xc3, 0xae, 0xc5, 0xbe, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3, 0xae, 0xe1, 0xbb, 0x9d, 0xc3, 0xb1 ]; var funnyWord = utf8.decode(utf8Bytes); assert(funnyWord == 'Îñţérñåţîöñåļîžåţîờñ');
Чтобы преобразовать поток символов UTF-8 в строку Dart, укажите utf8.decoder
в методе Stream transform()
:
var lines = utf8.decoder .bind(inputStream) .transform(const LineSplitter()); try { await for (final line in lines) { print('Got ${line.length} characters from stream'); } print('file is now closed'); } catch (e) { print(e); }
Используется utf8.encode()
для кодирования строки Dart в виде списка байтов в кодировке UTF8:
Listlt;intgt; encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ'); assert(encoded.length == utf8Bytes.length); for (int i = 0; i lt; encoded.length; i ) { assert(encoded[i] == utf8Bytes[i]); }