NodeJS Анализ больших текстовых файлов в utf-8

Заранее извиняюсь за нубовский вопрос.
Столкнулся с новой для меня проблемой программируя под NodeJS (платформа имеет значение?). Предположим, есть большой файл, в котором содержится список строк, которые нужно прочесть и каждую проанализировать и сохранить. Файл имеет довольно большой объем, содержит кириллицу и хранится в кодировке UTF-8.
Для чтения такого файла, естественно, следует использовать бинарно-безопасный способ и анализировать информацию загружая ее по частям.
В nodejs я создаю буфер размером 32кб, читаю, разбиваю по строкам, анализирую, сохраняю. Все вроде работало бы нормально, но… подкрался незаметно. Спустя некоторое время я заметил артефакты в сохраненных результатах работы.
Я сразу понял в чем дело, но не знаю как решить элегантно такую задачу. Дело в том, что символы в кодировке utf-8 имеют разный размер в байтах. А чтение блоками с заданной длинной может «порвать» символ на стыке блоков. Понятное дело, в такой ситуации нужно откинуть последние байты полученной информации, а при чтении следующего блока их прочитать заного.

Вопрос как посчитать кол-во байт, которые нужно откинуть? Был бы хотябы си, php или java, где можно обратиться за помощью к iconv. В NodeJS то как быть… Из арсенала только функция преобразования буфера в строку
buffer.toString('utf8', 0, bytesRead);
Может быть, кто-нибудь сталкивался с такой проблемой?
  • Вопрос задан
  • 4115 просмотров
Пригласить эксперта
Ответы на вопрос 1
@PomanoB
ru.wikipedia.org/wiki/UTF-8 — там есть табличка, по первому байту символа можно понять сколько байтов он содержит.
И всё проще, если там только латиница и кириллица
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы