Perl. Есть ли изящный способ валидации utf-8?
Задача проверить документ на корректность. Читать буферами определённого размера, потому-что данные не доверенные( вдруг там нету символов конца строки ). Раз мы читаем буферами из-за этого возможны битые символы utf-8. Значит нужно читать символами указав соответствующую кодировку, при открытии файла. Далее нужно проверить на валидность utf-8 и в случае ошибки вывести смещение битого символа в файле. Как это изящно реализовать? Такой мощный язык и всё через какие-то диковатые костыли.
Ответы (1 шт):
Автор решения: user384378
→ Ссылка
open( my $fh, '<:encoding(UTF-8)', $file ) or die $!;
while( read($fh, $buf, $size) ) {
# Изящно и логично было бы здесь,
# перехватывать исключения слоя.
# В этом случае читаются целые символы
# и есть возможность отслеживать реально битые.
}
Но увы это невозможно. Вместо этого надо городить какие-то подпорки...