Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 01.10.2019
Сообщений: 25

Перекодировка из КОИ-8 в Windows 1251

20.10.2019, 14:20. Показов 8734. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать программу перекодировки текстовых файлов из кодового набора КОИ-8 в кодовый набор cp1251 по таблице, заданной в текстовом файле. Имя файла таблицы вместе с именами файлов исходного текста и результата его перекодировки должно передаваться программе через аргументы командной строки ее вызова. Если результирующий файл уже существует, программа должна обеспечить интерактивный запрос его перезаписи. Данные в таблице перекодировки должны быть представлены в системе счисления по основанию 8.

Помогите пожалуйста с программой!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2019, 14:20
Ответы с готовыми решениями:

Перекодировка с windows-1251 в utf-8
как можно написать процедуру на pl/sql, чтобы перекодировал с windows-1251 в utf-8 ?

Перекодировка строки в Windows-1251
Формирую QR-код через dll которую 1С используют в типовых решениях (БГУ и проч). Загоняю строку в ком объект, он отдает сформированную...

Перекодировка из OEM-866 в Windows-1251
написан батник, результат каждой команды он выводит в лог так: 1>>%~dp0\log.txt 2>>&1 понятно после завершения батника в этом логе...

2
505 / 158 / 49
Регистрация: 27.02.2016
Сообщений: 818
20.10.2019, 17:27
Code
1
2
3
4
5
6
7
8
iconv --from-code  UTF-8 --to-code WINDOWS-1251 <  a.txt  > b.txt
iconv --from-code  WINDOWS-1251 --to-code KOI8 <  b.txt  > c.txt
iconv --from-code  KOI8 --to-code UTF-8 <  c.txt  > d.txt
cat a.txt 
абвгедж
 
cat d.txt 
абвгедж
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
21.10.2019, 01:58
Наверное в первую очередь необходимо создать таблицу перекодировки по основанию 8
Я плохо знаю эти кодировки поэтому для примера просто буду перекодировать 32 буквы
русского алфавита в нижнем регистре, а расширить вы думаю сможете сами.
Создадим файл в родной utf-8 кодировке с русским алфавитом. Для этого напишем
скрипт
Bash
1
2
3
4
dig=$(printf "%d" \'а)
for((i=dig; i < dig+32; i++)); do
    echo -en \\U$(printf "%x" $i)
done > utf.txt
После его запуска он создаст файл с алфавитом
переведем его в кодировку KOI8-RU и WINDOWS-1251
Bash
1
2
iconv -f UTF-8 -t KOI8-RU -o koi.txt utf.txt
iconv -f UTF-8 -t WINDOWS-1251 -o win.txt utf.txt
Для конвертирования будем использовать утилиту tr
и создадим таблицу в первой строчке весь 8 битный набор в KOI8
а во второй строчке весь набор в WINDOWS-1251
В каждом столбце получится пара значений соответствующая разным кодировкам
Bash
1
2
od -An -b -w32 koi.txt | tr ' ' '\' > db.txt
od -An -b -w32 win.txt | tr ' ' '\' >> db.txt
Посмотрим что у нас получилось
cat db.txt
Bash
1
2
\301\302\327\307\304\305\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\337\331\330\334\300\321
\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
Напишем программу перекодировки conv.sh:
Bash
1
2
3
4
5
#!/bin/bash
 
while read -n 1 char; do
    echo -n $char | tr $(head -1 db.txt) $(tail -1 db.txt)
done < koi.txt
Запускаем и помним что программа перекодирует буквы из KOI в WINDOWS а значит на выходе чтобы увидеть
правильность работы нашего алгоритма необходимо дополнительно перекодировать в UTF-8
Bash
1
./conv.sh | iconv -f WINDOWS-1251 -t UTF-8
Получаем на выходе
Bash
1
абвгдежзийклмнопрстуфхцчшщъыьэюя
А значит скрипт работает правильно. Ну вот как то так, начало положено, развивайте сюжет

Добавлено через 6 минут
Вот такая строчка тоже будет работать и даже значительно быстрее
Bash
1
tr $(head -1 db.txt) $(tail -1 db.txt) <koi.txt | iconv -f WINDOWS-1251 -t UTF-8
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2019, 01:58
Помогаю со студенческими работами здесь

Apache : перекодировка windows-1251-> unicode/utf-8
Проблема такого плана, необходимо средствами сервера заставить перекодировать 'на лету' файлы хранящиеся на сервере в кодировке ...

Перекодировка из utf в windows-1251. Удаление спец. символов.
Необходимо сформировать xml файл в кодировке windows-1251. Даные для этого xml поступают из БД в utf-8. При этом в записях есть поля с...

Перекодировка из ВИН в КОИ
мне надо некий текст, который берется из формы постить на две страницы, одна из которых в кодировке ВИН, другая в КОИ вопрос: как...

Программа для перекодировки русского текста в/ из кои 8 cp 1251 и ср 866
Написать программу для пеекодировки русского текста в/из кои 8 ср 1251 и ср 866

Перекодировка строки win-1251 в кодировку utf-8
Помогите пожалуйста! есть проблема перекодировки строки win-1251 в кодировку utf-8. Может есть какие-нибудь стандартные модули для этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru