Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   *nix (https://forum.antichat.xyz/forumdisplay.php?f=43)
-   -   как изменить кодировку для конкретной проги? (https://forum.antichat.xyz/showthread.php?t=82724)

Дикс 28.08.2008 14:29

как изменить кодировку для конкретной проги?
 
помню кто-то подсказывал как запустить программу, установив для неё кастомную кодировку. По типу "команда кодировка имя_программы"
Убей, не могу вспомнить как это делается.

Проблема в следующем: написал пхп скрипт, который вызывает через system - man с параметром и вывод выдает на страницу. Но там полно нечитабельных символов. Использую utf-8. Как сделать ответ системы читабельным?

gisTy 28.08.2008 14:48

если вывод в терминал, то:
Код:

prog|iconv -t locale
а если ГУИ, то:
Код:

LANG=locale prog
вместо locale поставить нужную тебе локаль(кодировку)

Дикс 28.08.2008 15:17

попробовал так:

system("man " . $_GET['command'] . " | iconv -cst UTF-8");

не канает

ПС тему наверное в кодинг надо перенести

gisTy 28.08.2008 15:21

посотри на вывод:
Код:

locale -a
там будут все названия кодировок, установленных в системе, и выбирай нужную тебе.

Дикс 29.08.2008 07:13

посмотрел локали, нашёл там ru_RU.utf-8

PHP код:

man ls iconv -'ru_RU.utf-8'
iconvпреобразование в `ru_RU.utf-8' не поддерживается
Попробуйте 
`iconv --help' или `iconv --usage' для
получения более подробного описания
.
Ошибка исполнения команды форматирования или просмотра.
Системная команда (cd /usr/share/man/ru && (echo ".pl 11i"; /usr/bin/gunzip -'/usr/share/man/ru/man1/ls.1.gz') | /usr/bin/gtbl | /usr/bin/nroff --mandoc 2>/dev/null | /usr/bin/less -isзавершилась с кодом 36096.
Ошибка исполнения команды форматирования или просмотра
.
Системная команда (cd /usr/share/man && (echo ".pl 11i"; /usr/bin/gunzip -'/usr/share/man/man1/ls.1.gz') | /usr/bin/gtbl | /usr/bin/nroff --mandoc 2>/dev/null | /usr/bin/less -isзавершилась с кодом 36096.
Ничего про ls в руководстве нет 

koi8r тоже не канает.

как узнать кодировку в который вываливается man?

neval 29.08.2008 09:33

man man

Цитата:

By default, man searches for a localized manpage in a set of
locale subdirectories of each manpath(1) component.

Locale name is taken from the first of three environment
variables with a nonempty value: LC_ALL, LC_CTYPE, or LANG,
in the specified order.

If the value could not be determined, or is not a valid
locale name, then only non-localized manpage will be looked
up.

Otherwise, man will search in the following subdirectories,
in the order of precedence:

<lang>_<country>.<charset>
<lang>.<charset>
en.<charset>

For example, for ``de_DE.ISO8859-1'' locale, man will search
in the following subdirectories of the /usr/share/man manpath
component:

/usr/share/man/de_DE.ISO8859-1
/usr/share/man/de.ISO8859-1
/usr/share/man/en.ISO8859-1

Finally, if the search of localized manpage fails, it will be
looked up in the default /usr/share/man directory.

Дикс 29.08.2008 09:42

у меня LANG - ru_RU.UTF-8

neval 29.08.2008 10:50

выложи кусок вывода скрипта

ltslashgt 29.08.2008 14:00

Цитата:

Сообщение от Дикс
посмотрел локали, нашёл там ru_RU.utf-8

man ls | iconv -t 'ru_RU.utf-8'

неправильно делаешь, чтобы пользоваться iconv, набери
iconv --list

Цитата:

Сообщение от Дикс
koi8r тоже не канает.

как узнать кодировку в который вываливается man?

Если на вид не можешь отличать, в konsole Настройка->Кодировка ставишь сначала одну потом в этой же konsole делаешь man свой, если неправильно ставишь другую кодировку и опять делаешь man
то есть после выключения этой konsole кодировка примет старое положение, т.к. ты ставишь значения кодировки не по-умолчанию а на один сеанс
обычно это либо utf либо cp1251 либо koi8-r

0xc001d00d 08.09.2008 01:24

в консоли делаешь:
locale -a

и смотришь, какая кодировка тебе нужна. например ru_RU.CP1251

потом снова в консоли пишешь:
LANG="ru_RU.CP1251" my_program

где `my_program` это прога, которую хочешь запустить


Время: 01:21