Для примера в напишем что-нибудь в пустой файл File.txt, сохраним и посмотрим кодировку:
$file File.txt
File.txt: UTF-8 Unicode text
теперь заменим окончание строк на \r\n и кодировку на WINDOWS-1251:
$cat File.txt | sed -z 's/\n/\r\n/g' | iconv -t WINDOWS-1251 > File2.txt
смотрим кодировку:
$file File2.txt
File2.txt: ISO-8859 text, with CRLF line terminators
OK, запомнили, после перекодирования в WINDOWS-1251 кодировка должна быть:
ISO-8859 text, with CRLF line terminators
Теперь проблема:
Есть файл titles.txt.bkp (с кирилицей, в дефолтном текстовом редакторе leafpad она отображается кракозябрами) с исходной кодировкой:
Non-ISO extended-ASCII text, with CRLF line terminators
который нужно перекодировать в WINDOWS-1251 (ISO-8859 text, with CRLF line terminators).
Он корректно перекодируется в дефолтный UTF-8 из этих кодировок:
CP1251
CP5347
CSIBM5347
IBM-5347
IBM5347
MS-CYRL
PT154
RK1048
STRK1048-2002
WINDOWS-1251
найдено с помощью этого:
for CNV in $(iconv -l | sort | sed 's%//%%'); do \
[ "$(sed -n '515p' titles.txt.bkp | iconv -f $CNV 2>/dev/null \
| grep 'Игра сохранена')" ] && echo "$CNV"; done
Но при разных попытках перекодировать из найденых выше кодировок в WINDOWS-1251:
$iconv -f CP1251 -t WINDOWS-1251 titles.txt.bkp -o titles.txt
всегда получается это:
$file titles.txt
titles.txt: Non-ISO extended-ASCII text, with CRLF line terminators
Не пойму в чем проблема, что не так?
Просто рядом лежит файл подобного содержания с нужной (ISO-8859 text, with CRLF line terminators),
и кирилица в текст. редакторе правильно отбражается.