Guest Posted December 25, 2004 Report Posted December 25, 2004 Задача: Сценарий перекодирует текстовый файл, имя которого указано в командной строке, из одной кодировки в другую. Сценарий спрашивает имена кодировок у пользователя. Должны поддерживаться как минимум cp1251, koi8r и cp866. Результат выдаётся в файл, указанный вторым параметром в командной строке. Программы iconv, recode, lynx и т.п. не использовать! Пример: $ ./myscript.sh data.txt result.txt Please, specify sourse charset: 1) cp1251 2) koi8r 3) cp866 #? 2 Please, specify destination charset: 1) cp1251 2) koi8r 3) cp866 #? 1 Ребята... помогите пожалуста, нужно сдавать, а у меня уже фантазия закончилась... придумать ничего не могу! Quote
EL[michlen] Posted December 25, 2004 Report Posted December 25, 2004 Скрипт писать не буду - это не пять минут, время жалко. Но посоветую. Перечисленные кодировки похожи тем, что английские буквы в них можно оставлять без изменений. Касательно cp1251 и cp866, можно просто смещать код символа (на сколько - не помню, см. таблицы этих кодировок). С koi8-r сложнее, там символы как-то странно расположены. Можно завести некий массив, в котором хранить соответствующие уже конвертированные символы в koi8-r по соответствующим смещением. Но если так делать, можно вообще не задумываться, и создать по массиву на каждую кодировку =) Quote
Guest Posted December 25, 2004 Report Posted December 25, 2004 Жаль, что тебе жалко времени... нужно бы по-конкретней, хотя бы для первых 3-5 символов как делать? хех... похоже скрипта мне тут не напишут. 8( Quote
EL[michlen] Posted December 25, 2004 Report Posted December 25, 2004 Цитата: похоже скрипта мне тут не напишут. 8( Ну ясно дело, это ж не хелловолд =) Поделюсь тем, что видел. Вот хелп по koi8-r: http://koi8.pp.ru/main.html Здесь можно посмотреть хороший сорс на JavaScript (как я и говорил, по массиву на кодировку): http://iclub.nsu.ru/~cher/code/english/ И еще, смотри исходники и описания iconv, там все понятно: http://www.gnu.org/software/libiconv/ Quote
Guest Posted August 25, 2005 Report Posted August 25, 2005 Помоему это можно сделать командой tr Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.