Как декодировать и кодировать символы UTF-8 в flutter

#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]); }