Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: проблема с перекодированием текста в WINDOWS-1251  (Прочитано 2475 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Cxms

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Для примера в напишем что-нибудь в пустой файл 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),
и кирилица в текст. редакторе правильно отбражается.
« Последнее редактирование: 04 Июля 2016, 20:35:13 от Cxms »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3031
    • Просмотр профиля
CRLF к кодировке отношения не имеют, это символы ASCII.
Я до сих пор всегда считал, что CP1251 и Windows-1251 - это одно и то же
и всегда использовал CP1251. Попробуйте без Windows-1251.

Пётр.

Оффлайн Cxms

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Да, знаю что не имеют и кодировки эти идентичны, но как перекодировать?
Перепробовал все кодировки что выше писал, и без  Windows-1251,
еще пробовал и из, и в ISO_8859-5, результат тот же (и с ключем -с), + ругается на недопустимую последовательность.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3031
    • Просмотр профиля
Я тоже не пойму, в чём проблема, если текст всё же перекодируется,
а также зачем вы перекодируете из CP1251 в Windows-1251, если считаете,
что это одно и тоже. Покажите пример проблемного файла, наверное, достаточно
части и скажите, что из него надо получить.
Пётр.

Оффлайн Cxms

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Это была попытка решить другую проблему:
(Нажмите, чтобы показать/скрыть)
на разборки с кодировками убил два дня, узнал много нового... и перекодил этот файл именно в "ISO-8859 text, with CRLF line terminators", но как оказалось, эти кодировки не причем, там дело в другом,
тему можно закрывать.

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.