Сегодня решил наладить свой старый сайт http://aleksanders.newmail.ru/. Некоторое время назад администрация newmail.ru изменила какие-то настройки и сайты, сделанные в кодировке UTF-8 стали отображаться в виде непонятных закорючек и ромбиков. Возникла потребность массовой конвертации.Первое, что пришло в голову — вооружиться текстовым редактором, открывать файлы по одному и сохранять в кодировка WINDOWS-1251. Примерно после 20 обработанных файлов я понял, что к концу работы или отупею, или начну дёргаться. Список файлов html был размером со страницу экрана.
Подумал, вспомнил байку о том, что Linux пишут программисты для программистов, а не для людей 🙂 Решил написать скрипт. Получилось примерно следующее:
#!/bin/sh
for i in *.htm*; do iconv -t WINDOWS-1251 -f UTF-8 «$i» >tmp; mv tmp «$i»; done
Покумекав еще немного, я пришел к выводу, что плохо, если страничка будет в кодировке WINDOWS-1251, а META-тэг прописан UTF-8. И написал еще один скрипт:
#!/bin/sh
for i in *.htm*; do sed -e ‘s/charset=UTF-8/charset=WINDOWS-1251/g’ «$i» >tmp; mv tmp «$i»; done
Теперь всё стало хорошо и правильно.
Осталось как-то изощриться и закинуть обновлённые файлы на хостинг newmail.ru…
ВНИМАНИЕ! ОПАСНОСТЬ!!!
Если среди конвертируемых файлов попадут файлы с иной кодировкой, чем указано, в результате получится каша вместо букв. ПЕРЕД ВЫПОЛНЕНИЕМ КОНВЕРТАЦИИ ДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ КОНВЕРТИРУЕМЫХ ФАЙЛОВ!