ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
637521 Топик полностью
fk0, легенда (11.12.2015 11:44, просмотров: 65) ответил symbions на Поигрался я с разными кодировками - автоматом не выходит - ибо оно конвертит все сторки. Например, даю команду
А iconv и не угадывает. Он работает строго как скажешь. Автоматом, вот тебе:  #!/bin/sh dos2unix | (IFS=""; while read line; do echo $line | konwert any/ru-koi8r; done;) На stdin даёшь файл с разными кодировками в разных строчках, на stdout получаешь нормальный русский язык (в koi8-r -- у меня в терминале до сих пор koi8, поправь на ту кодировку, что нужна тебе). Пример, скрипт для генерации файла с разными кодировками: #!/bin/sh echo "10 SIN ; REM Текст на русском языке" | iconv -t cp866 echo "20 GOTO HELL ; REM Албанский комментарий" | iconv -t cp1251 Пример декодирования файла:
sysop@pc$ cat file.txt 
10 SIN          ; REM      ╔╙АБ ╜═ ЮЦАА╙╝╛ О╖К╙╔
20 GOTO HELL    ; REM юКАЮМЯЙХИ         ЙНЛЛЕМРЮПХИ

sysop@pc$ cat conv.sh 
#!/bin/sh
dos2unix | (IFS=""; while read line; do echo $line | konwert any/ru-koi8r;  done;)

sysop@pc$ sh conv.sh  < file.txt 
10 SIN          ; REM      Текст на русском языке
20 GOTO HELL    ; REM Албанский         комментарий
Для всего этого нужна программа konwert (пакеты konwert и konwert-filters в дебиане). Возможно, это она (http://sourceforge.net/projects/konwert/), если не она, то исходники есть в дебиане опять же. У этой программы есть функция угадывания кодировки (для файла целиком, потому мне пришлось скриптом разделить файл на строки).
[ZX]