Проблема кодировки текстового файла всегда была и насколько я понимаю будет еще долго. В винде используется стандарт — windows-1251(cp-1251), в большинстве юниксовых систем — koi8-r, в линуксовых системах, как правило — utf-8. В системе MacOS, как вы знаете, используется utf-8.
Когда работал в винде — использовал замечательную программу SkimEdit. В WinXP — можно заменить (в настройках эта опция есть) стандартный блокнот этой прогой — тогда как в WinVista не советовал Вам этого делать — больше WinVista не загрузится корректно.
Но вот я перешел на MacOS и понял что на этой системе чтение текста в кодировки отличной от стандартной (utf-8) — настоящая проблема. Начал эксперименты с программами:
- Начал с популярной программы BBEdit и также ее бесплатным аналогом TextWrangler. Пользовал довольно долго — но после последнего обновления избавился как от страшного сна. То что настройки сделаны просто через жопу, ftp и ssh клиенты мягко говоря странноваты — но после последнего апдейта посмотрел какие дополнительные символы вводит данный редактор при сохранение.… Короче отказался.
- Далее увидел графическую интерпретацию моего любимого терминального редактора vim — Macvim. Программа понравилась очень (живет до сих пор на компе). Куча приятных вещей: спокойно подхватила мой .vimrc из домашней директории, работает быстро, бесплатна и естественно все плюсы терминально vim’а. Но не совсем удобно открывать большие текстовые файлы (50–100 МБайт).
- Попробовал замечательную программу Coda. Удобна для работы через ftp и ssh, удобная настройка, приятно удаленно работать, как со своим сайтом, так и править скрипты. Таким образом программа оставила самые положительные эмоции — но опять же начинает жутко долго открывать текстовые файлы размером более 5 МБайт.
- Попробовал программу TextMate. Программа просто замечательная: работает бысто, гибкая в настройке, открывает файлы больших размеров просто моментально, куча мелких удобств. И опять минус — работает ТОЛЬКО с utf-8.
- Конечно использую встроеный в Leopard текстовый редактор TextEdit. По умолчанию также открывает в utf-8, но при желании открывает и в других кодировках.
Далее подумал — может быть не пытаться открыть файл в другой кодировки, а перевести принудительно все текстовые фалы в utf-8. После некоторых раздумий решил написать скрипт для перевода файлов находящихся в нужной директории в кодировку utf-8. Сразу скажу спасибо статье — позволила съэкономит массу времени. Вот собственно скрипт:
#!/bin/bash
#
#
if [ -z "$1" ]
then
echo 'Change encodings in /ПутьКПапкеПоУмолчанию/';
find "/ПутьКПапкеПоУмолчанию/" -name "*.txt" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; chmod 644 "$i"; done
exit 1;
else
echo 'Change encodings in' $1;
find "$1" -name "*.txt" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; chmod 644 "$i"; done
fi
Как видно из кода — скрипт запускатся с переменной. Переменная — это полный путь к папке с файлами необходимыми для перекодирования, либо, если переменная пустая, перекодировка совершается в ПапкеПоУмолчанию. Причем перекодируются все файлы с расширением txt, как в самой папке так и в подпапках.
Естественно если заменить windows-1251 на koi8-r будет происходить перекодирование из koi8-r в utf-8. Чтобы узнать все типы кодировок которые использует приложение iconv необходимо в терминале дать команду:
iconv –l
Далее — сохранил данный скрипт в файл с расширение .sh, в настройках сделал файл запускаемым и назначил открытие по умолчанию данного типа файлов программой Terminal.
Вот и все — теперь при необходимости перевожу нужные текстовые файлы в utf-8 и работаю с ними. Если необходимо отправлять файл пользователям винды — тем же скриптом (толька меняю местами utf-8 и windows-1251) перекодирую в windows-1251 и отравляю.
No Comments