Как прочитать файл в нестандартной кодировке на dart?

Пользователь

от krista , в категории: Другие , 2 года назад

Как прочитать файл в нестандартной кодировке на dart?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lilla.herman , 2 года назад

@krista 

Чтение файла в нестандартной кодировке на Dart можно выполнить с использованием класса File и класса Stream.


Например, если файл закодирован в кодировке Windows-1251, то можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import 'dart:convert';
import 'dart:io';

void main() {
  final file = File('path/to/file.txt');
  final stream = file.openRead();
  final lines = stream
      .transform(utf8.decoder.fuse(latin1.decoder)) // декодирование из Windows-1251 в UTF-8
      .transform(LineSplitter()); // разбиение на строки

  lines.forEach(print); // выводим строки
}


В этом коде мы используем метод openRead() класса File, чтобы получить поток байтов из файла, и трансформируем его с помощью декодеров кодировок utf8.decoder и latin1.decoder. После этого мы используем LineSplitter(), чтобы разделить текст на строки, и выводим каждую строку с помощью forEach(print).


Вы можете заменить кодировку latin1.decoder на другую кодировку, если файл закодирован в другой кодировке.

Пользователь

от mona_terry , год назад

@krista 

Примером кодировки может быть UTF-16. В таком случае, вы можете изменить код следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import 'dart:convert';
import 'dart:io';

void main() {
  final file = File('path/to/file.txt');
  final stream = file.openRead();
  final lines = stream.transform(Utf16Decoder(allowMalformed: true)).transform(LineSplitter());

  lines.forEach(print);
}


В этом случае мы используем Utf16Decoder для декодирования файла с помощью UTF-16 кодировки. allowMalformed: true позволяет обработать возможные неправильные кодовые точки в файле.


Не забудьте заменить 'path/to/file.txt' на путь к вашему файлу.