Ответ 1
Эта команда:
iconv -f utf-8 -t utf-8 -c file.txt
очистит ваш файл UTF-8, пропустив все недопустимые символы.
-f is the source format
-t the target format
-c skips any invalid sequence
У меня есть куча арабских, английских и русских файлов, которые закодированы в utf-8. Попытка обработать эти файлы с помощью Perl script, я получаю эту ошибку:
Malformed UTF-8 character (fatal)
Вручную проверяя содержимое этих файлов, я обнаружил в них какие-то странные символы. Теперь я ищу способ автоматического удаления этих символов из файлов.
Есть ли способ сделать это?
Эта команда:
iconv -f utf-8 -t utf-8 -c file.txt
очистит ваш файл UTF-8, пропустив все недопустимые символы.
-f is the source format
-t the target format
-c skips any invalid sequence
Ваш метод должен читать байты по байтам и полностью понимать и оценивать байт-мудрую конструкцию символов. Самый простой способ - использовать редактор, который будет читать что угодно, но только выводить символы UTF-8. Текстовый блок - один из вариантов.
Для справки у git bash есть iconv на windows
cat foo.txt | strings -n 8 > bar.txt
выполнит эту работу.