Как перекодировать 1251 в UTF-8
Возникла задача перекодировать файлы сайта в формат UTF-8, а до этого данные файлы были созданы в кодировке WINDOWS-1251.
Вроде бы задача тривиальная — берем любой кодировщик и кодируем из widows-1251 в utf-8, но не тут то было, так можно делать если у нас десяток файлов.
А если файлов тысяча? Да и еще не скопом, а каждая группа в своей подкатегории!
Сразу в голову приходит идея — берем пакетный перекодировщик файлов и кодируем одним мановением мыши.
Кстати хочу заметить файлы у меня лежали на виртуальном сервере, и диск с файлами был подключен как обычный сетевой диск. Т.е. без всяких фтп и прочего, хотя конечно все это есть.
И так, необходим конвертер для пакетной кодировки в UTF.
И пакетной по-настоящему, а не выбрали кучу файлов и кодируем, чтобы можно было добавлять начальную директорию, а файлы кодировались рекурсивно.
После тщательных поисков было найдено решение!
Есть замечательный бесплатный конвертер для пакетного конвертирования в UTF — UTFCast Express — скачать конвертер UTFCast Express.
Он позволяет легко и быстро в автоматическом режиме перекодировать каталог и все файлы в подкаталогах. Но у него есть небольшая особенность! Так как версия Экспресс бесплатная — то она не имеет опции конвертировать в UTF-8 без BOM (BOM — Byte Order Mark, служит для идентификации кодировок UTF)
Недостаток результата конвертирования такой, что ваши PHP скрипты скорее всего не будут работать! А вот для решения этой проблемы необходимо применить вторую программку — скачать utf8-bom-remover.exe — UTF-8 BOM Remover
Эта тоже замечательная программа — прекрасно справляется с удалением BOM в UTF файлах. А главное рекурсивно все содержимое каталога и подкаталогов!
Вот такой связкой можно решить такой важный вопрос.
До этого я пересмотрел программы:
Smart Recoder 1.6.2b — не работает с UTF-8
TEA 26.2.0, TEA 27.0.1 — крутой редактор, но я не понял как его можно применить для этих целей, хотя некоторые пишут что можно
Encoding Master 1.63 — можете попробовать, но при добавлении моей директории он подвисал
Notepad++ (NPP) — классный, гибкий редактор, но как таковой рекурсивной простой и удобной перекодировки нет, но можно легко убирать BOM
AkelPad — можно вручную сохранять в UTF-8 без BOM
коммандер FAR с плагином FarTrans — при обработке 1010 файлов php плагин вылетал в течении 3-х секунд, пробовал несколько раз
Ansi2Uni — классный маленький конвертер, но с несовсем рекурсией
Russian Anywhere 4.62 — навороченный конвертер, но как-то не пошел
Kaboom — вроде было все что нужно, вот только с рекурсией не удалось
UTF8_convert — минимум кнопок, но нет возможности выключать BOM
ABConverter — не работает с UTF
Если есть желание и возможности заплатить 30$, то рекомендую купить платную версию UTFCast Professional очень мощный, гибкий и удобный конвертер (по крайней мере мне так показалось)
P.S. не кодируйте .htaccess дабы не познать проблем
Здравствуйте,
ссылки устарели у Вас,а мне нужно перекодировать закладки из IE в FireFox -то есть там кодировка 1251 , а тамUTF-8 ….может я неправильно делаю импорт в Мазилу?
Закладки не читаемы,в гугле тоже много всего,но нет конкретики…
спасибо за прочтение.
Анатолий, спасибо за ваш комментарий,
файлы перезакачал (действительно потерялись при переездах).
По поводу вашего вопроса странно, не должно такого быть,
обычно экспорт и импорт проходят без проблем.
Как вы делаете импорт?
Смотрите, как должно работать — в Мозилле — Закладки — Управление закладками — Импорт и резервирование — Импорт из HTML — Microsoft Internet Explorer
Это при условии что в IE у вас сейчас они есть, если же их там нет, можно попробовать импортировать в IE, а потом как я написал выше.
Пробовал не работает ((( после заливки на сайт пустая страница
BOM убирали в UTF?
и нужно смотреть на ошибки в логах, чтобы понять в чем дело
Почему после использования Вашей утилиты кодировка файлов меняется обратно на ANSI ?
не знаю что вы делали, но у меня работало так как нужно
Спасибо. Все работает. Скорость перекодировки впечатляет!
А ещё есть «Штирлиц» Тоже мощный редактор с множеством кодировок
Штирлица знаю, пробовал и его,
возможно забыл его написать, но это классика его и так знают :-).
но вот эта связка порвала все остальные программы
> но вот эта связка порвала все остальные программы
совершенно с вами согласен! отлично работает связка! спасибо!
пожалуйста!
после полной перекодировки всего сайта в панели управления — одни кракозяблы, по содержанию сайта — все ок, но css не работает.
Спасиб о
Спасиба !
Antonio, благодарю за представленный материал. Действительно, очень простой и удобный инструмент.
Большое спасибо за информацию. Всё выручило, всё помогло.
рад что помог
Кстати utfcast в версии 1.5 тоже может записывать без BOM и даже про рекурсию было написано, но мне это не нужно.
Спасибо за обзор.
Уважаемый, скажите пожалуйста что вы посоветуете мне для пакетной перекодировки наоборот , из UTF-8 в WINDOWS-1251 ? Страниц более 4 тыс .
Спасибо.
Петр, то что удалось найти (не считая разные методы рекурсивного использования iconv)
отличная программа — призер конкурсов, очень много возможностей (даже слишком много как мне показалось.. )
TextPipe — единственный недостаток она платная, но в триальном режиме вроде бы позволяет сделать то что нужно.
Спасибо, пока испытал «iconv», результатом доволен, за исключением малопонятного не синтаксиса.
Рекомендуемую вами программу «TextPipe» скачал, разбираюсь, там действительно настолько много всего. что трудно понять простому , требует изучения.
в новой версии….там есть галочка без БОМ….., только вот странно он кодирует как бы и вовсе не кодирует…,
и потом даже если Sourse указать, тока что отконвертированный каталог..,опять находит ANSI.
а нет….всё работает!!
всему виной галочка: copy unconverted- я решил почему-то что это копировать даже неконвертированные файлы.
в ansi вот, там в другие можно в utf-8 тоже, тока там надо чётко указывать какая была и в какую преобразовать :
anton-pribora.ru/recoder/
web-sam.narod.ru/
Спасибо за подсказку! Два часа искала в Инете и пыталась перекодировать сайт с кодировкой Windows-1251. Notepad2 не помог. А с вашей помощью несколько десятков страниц за считанные секунды перекодировались .
, пожалуйста,
с нотепадом конечно это делать дольше
Спасибо! Полезный пост. Как раз столкнулся с такой же проблемой.
Бесповоротное и бескомпромисное спасибо!
Вообще не занимаюсь созданием и кодировкой PHP>>> использовал для изменения кодировки субтитров, чтоб на телевизоре работали… Ничего кроме этой проги не помогло. Спасибо. Но после прочтения коментов-понял: не тем я занят в жизни
пожалуйста
Спасибо! Реально работает и скорость высокая.
Пакетный конвертер текстов [Win 1251-Unicode UTF-8] и не только
Бесплатная программа с открытыми исходниками, позволяет конвертировать в UTF-8 и обратно из всех распространенных кодировок, может добавлять и удалять BOM. Все те же возможности, что в UTFCast Pro и даже еще больше, только бесплатно — найти в гугле можно по фразе hexladen пакетный конвертер
Спасибо за советы.
Столкнулся с проблемкой: отправленные с Windows-ноута файлы txt не всегда корректно отображались со своей кириллицей в iOS (на iPad).
Оказалось, что корректно открываются только файлы, созданные на ноуте в юникоде (в UTF-8).
Скачал предлагаемые тут две программки.
Однако, почитав пост выше — от Vladimir, я побродил по нету.
И понял: время идёт, и уже родился на Земле некий Толик, который написал для задач перекодирования больших объёмов текстовых файлов (пакетами) очень маленькую и шуструю программку под Windows, «весящую» всего 130КБ и открывающуюся без установки (как бы Portable):
tolik-punkoff.com/2016/03/01/paketnyj-konverter-tekstov-win-1251-unicode-utf-8-i-ne-tolko/
Проверил — работает очень хорошо и быстро.
Одно пояснение: до перекодирования там нужно самостоятельно задать «маску файлов». Я написал там *.txt.
И всё сразу пошло! Все мои txt-файлы были определены в исходной папке, и моментально в выходной папке все файлы предстали в UTF-8.
Попробовал потом нажать на «Удалить BOM». В моём случае это было излишним: прога показала, что BOM в моих файлах и так нету :).
AlexAtHome,
спасибо за отзыв
Вернулся сюда к вам, потому что вдруг «пакетный Толик» из моего предыдущего поста перестал перекодировать весь задаваемый пакет: в UTF-8 перекодируется только первый файл из всего пакета, остальные почему-то остаются неперекодированными (остаются в Win-1251 ANSI), хотя в проге отображается, что все файлы пакета сконвертированы и перемещены в новую целевую папку.
А рекомендуемый Вами UTFCast, хотя и требует инсталляции (в отличие от «портабельного» Толика), но справился со всем пакетом без проблем (как раньше было у Толика).
Однако, Толик по-прежнему очень быстро и правильно поснимал BOM во всём пакете после работы UTFCast.
Проверяю я всю эту работу «контрольными открываниями» отдельных файлов в AkelPad: в нижнем баре там сразу видно в какой кодировке, с BAM или без BAM кодирован у меня кириллический текст.
Дописываю:
Оказывается,
txt-файлы, содержащие «в теле» только одну латиницу (без кириллицы) после отработки в «пакетном Толике»
превращаются в 1251 (ANSI-кириллица). Поэтому я и подумал, что «Толик» теперь стал обрабатывать только первый файл из пакета:
у меня в пакете после первого файла (с кириллицей) шли несколько штук файлов с латиницей.
В отлчие от Толика, предлагаемая Вами «связка»: инсталлируемый utfcast.exe+»портабельный» utf8-bom-remover.exe
действительно «превращают» ВСЕ файлы (всего пакета) из 1251 в UTF-8 NO BOM, независимо от того — содержат они «в теле» кириллицу или латиницу.
Поэтому «для чистоты» процесса ваша связка предпочтительнее.
Короче, я свои проблемы решил. Спасибо большое.
Не получилось перекодировать файлы в нужный вид. Кодировка файла меняется, а текст остаётся не изменным, мне нужно конвертировать текст в файлах, а не просто сменить кодировку.
Павел, значит что-то не так делаете.
Если файлов не много, то можете попробовать Notepad++ там перекодировка делается очень просто.
Благодарю за отзывы!
>txt-файлы, содержащие «в теле» только одну латиницу […]
Латиница в UTF-8 и латиница в ANSI, это одно и то же, и кодируется латиница так же 1 байтом Поэтому файл с одной латиницей и «не перекодируется». Вот в UTF-16 — все кодируется двумя байтами, там латиница выглядит как 0x00КодСимвола 0x00КодСимвола 0x00КодСимвола…