Перекодировка файлов

Думаю то, что в компьютере “живут” текстовые файлы, записанные в разной кодировке, известно почти всем. Ну, или все видели в какой-нибудь программе “кракозябры” вместо кириллицы при просмотре файлов, которые в Блокноте отображаются нормально.

Вот это и значит, что программа не воспринимает кодировку кириллицы. Т.е. символы кириллицы записаны не теми двоичными кодами (не в той кодовой таблице), которые конкретная программа “знает и любит”. А автоопределение кодировки в ней отсутствует.

В таком случае о замене кодов мы вынуждены позаботиться самостоятельно. Этот процесс и называется перекодировкой файла.

Именно с такой ситуацией я столкнулся при работе над своей предыдущей статьей про торрент-ТВ. Штатный плеер (Aceplayer) сохранял плей-лист формата m3u в кодировке Windows-1251 (она же ANSI-кириллица). А после загрузки плей-листа при следующем запуске того же плеера вместо нормальной кириллицы появлялись те самые кракозябры.

А вот при загрузке “постореннего” плей-листа, записанного в кодировке UTF-8, ничего подобного не происходило. Следовательно, файл нужно было просто перекодировать.

Как же это сделать легче всего?

Ну, во-первых, следует заметить, что большинство “солидных” программ определяют кодировку текста автоматически. Например, так поступают почти все браузеры. Поэтому мы всегда можем определить кодировку любой страницы любого сайта.

Кодировка в браузере

А вот Блокнот Windows ведет себя подленько: он автоматически определяет кодировку текста и правильно отображает кириллицу, но не позволяет нам доподлинно узнать код. Однако для того чтобы перекодировать файл, достаточно переписать его в режиме “Сохранить как …” и выбрать другую кодировку.

Перекодировка в Блокноте

Казалось бы, задача решена. Ан, нет! Блокнот записывает UTF-файл с BOM-маркером, т.е. вставляет перед текстом 3 не нужных нам в данном конкретном случае байта. Я-то могу их легко удалить примерно 1000 + 1 способом. А вы?

Поэтому мы пойдем другим путем, как нам и предлагали лет 125 назад!

Записать текст в любой нужной нам кодировке могут легко и просто два других текстовых процессора.

Первый – это хорошо известный всем веб-мастерам RJ Textedit, а второй – AkelPad.

Кстати сказать, именно последний – одна из лучших замен стандартному блокноту Windows. Оба бесплатны и прекрасно говорят по-русски. Рекомендую.

Перекодировка в RJ и AkelPad

Как видно на рисунках, в RJ достаточно на вкладке “Формат” выбрать нужную нам кодировку и сохранить файл с любым новым именем.

В AkelPad нужно так же, как и в Блокноте, “Сохранить как …”, выбрать из списка нужную кодировку (UTF-8) и снять галочку в чек-боксе “BOM.

Дело в шляпе!

В списке возможных кодировок AkelPad перед названием кода в скобках стоят какие-то цифры. Это номер кодовой страницы, с помощью которой ОС (и не только Windows) понимает, как правильно отображать символы на дисплее или при печати.

Обратите внимание на то, что файлы с одним и тем же текстом имеют разную длину в байтах. Это связано напрямую со способом представления символом в разных кодировках. Например, см. статью про UTF-8.

А вот если кому-то лень устанавливать какие-либо новые программы, то он может воспользоваться онлайн-перекодировщиком.

Перекодировка онлайн

Все просто. Нужно нажать кнопочку “Обзор …”, выбрать исходный файл на своем винте, указать способ перекодировки и кликнуть “Конвертировать”. Перекодированный файл будет автоматически передан менеджеру закачки (у меня это плагин DownThemAll!). Замечу только, что BOM-маркер к файлу не пришпиливается.

Те, кому нужно перекодировать сразу много файлов, могут заглянуть вот на эту страницу перекодировки файлов.

Впрочем, думаю, что люди, знающие что есть пакетная обработка файлов, в моих рекомендациях давно не нуждаются. Следовательно, последняя ссылка дана просто для полноты картины.

Желаю успехов

Скачать страницу в формате PDF (0,9 Мб).

Рубрики: Новости
Вы можете отслеживать ответы на эту запись через RSS 2.0. Вы можете оставить отзыв, или Трэкбек с Вашего собственного сайта.
2 комментариев
  1. 1. Вы не правы. Windows-1251 это не одно и тоже, что и ANSI. ANSI делает акцент на первые 128 символов, а Windows-1251 – вторые 128 символов.

    2. Следует иметь в виду, что код UTF-8 в отличие от Windows-1251 имеет переменную длину представления символов, все кириличные буквы – двухбайтные. Поэтому файлы всех русскоязычных текстов в коде UTF-8 будут длиннее файлов с теми же текстами но в кодовой таблице Windows-1251 почти в два раза.

    • Basilevus пишет:

      Александр!
      Видимо, не прав не только я. Например, разработчики AkelPad также, поскольку они написали: “Win 1251 (ANSI-кириллица)”.
      Но это пустяки, поскольку сам ANSI стандартизует только нижние 128 символов (0 – 127), остальные отдаются на откуп той же кириллице или украинскому. Но это и не принципиально, имхо. Любой знающий тему человек (или программа) поймет меня вполне однозначно, что и требовалось для правильного решения задачи.
      И второе. Разновидности Юникода кодировке UTF-8 действительно на представление любого символа стандартной кириллицы достаточно ровно 2 байтов. Но это никак не опровергает моего замечания про размер файла в UTF-8. Мало того, что в тексте могут быть спецсимволы и латиница, в нем могут присутствовать столь экзотические символы (какая-нибудь фита или ижица, например), что на их представление придется использовать 3 или даже 4 байта.
      PS. Но в текст статьи я внесу небольшую поправку благодаря Вашему замечанию.

Оставить Ответ

XHTML: Вы можете использовать, эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>