Есть необходимость периодически конвертировать текстовые файлы для просмотра в шиндусе и в лине. Конкретно в 1С, которая понимает только CP1251 (ISO-8859-1 тоже, наверное, не суть), который выглядит в Ubuntu по-кракозябрински. При помощи команды iconv -f CP1251 -t UTF-8
(и наоборот) всё это дело прекрасно конвертируется. Но есть нюанс: если вдруг откроешь в Ubuntu файл в любом текстовом редакторе и внесёшь в кракозябринский документ запись на обычной кириллице и сохранишь, команда перестаёт конвертировать, ссылаясь на «illegal input sequence at position» - на позиции как раз там, где я добавил на русском (кириллице) строчку.
На практике вряд ли вообще такое пригодится - вносить изменения. Обычно документы туда-сюда ходят без таких изменений. Я этот досадный эффект обнаружил случайно (наверное, где-то внутри во мне живёт талантливый тестировщик). Вполне возможно, мне не понадобится таким заниматься, то есть вносить изменения в документы. Но вдруг … просто предположим.
Есть какой-то способ конвертировать такой «киш-миш» кодировок в одном документе так, чтобы не было ошибок типа «illegal input … at position»?
Как пример, есть такой вот текст:
Ïðîâåðêà ôàéëà
Проверка файла
Позиция строк и их порядок может быть любой, не обязательно, что на 1 строке такая кодировка, а на 2-ой - вторая. То есть, заранее мы, как будто, знать не можем (например, забыли, что вносили изменения или внёс изменения кто-то другой).
Решение найдено тут