PDA

Просмотр полной версии : как изменить кодировку для конкретной проги?


Дикс
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

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

++Norton++
08.09.2008, 23:41
На крайний случай можно будет сменить кодировку страницы. А это будет скорее всего либо koi-8 либо utf-8