Summary: | неправильное перекодирование man-страниц | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | ildar <ildar> |
Component: | yelp | Assignee: | Yuri N. Sedunov <aris> |
Status: | REOPENED --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | aris, dottedmag, php-coder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
ildar
2008-08-21 09:51:50 MSD
yelp ожидает увидеть UTF-8. а наши руские man-pages в koi8-r наш man не поддерживает параметра для преобразования на лету (как в debian например). Я сам на это давно наткнулся, но багу что-то не повесил. Так и запишем - зависит от бага 16680 :) Я не понимаю, как баг про неверное отображение кавычки может блокировать баг с неправильным перекодированием страниц в yelp? После исправления bug #16680 yelp сам не починится. IMHO вам нужно патчить yelp, чтобы он перекодировал в UTF8, либо тогда все маны нужно конвертировать в юникод. Yelp использует man для показа страниц внутри себя. Дальше объяснять? (In reply to comment #5) > Yelp использует man для показа страниц внутри себя. Дальше объяснять? Да, желательно. Насколько я понимаю всё эту кухню, man возвращает текст в кодироке пользователя. Если я прав, то у Ильдара, должно быть, однобитная локаль. 2ildar@: у вас локаль какая? yelp'у нужно будет лишь объяснить, что нужно выставить требуемую кодировку. Однострочный патч. Ты уже в этом баге про yelp написал больше, чем объём этого патча. yelp никуда не возвращает текст, он его просто показывает, поэтому вопрос о кодировке стоит не здесь. Просто man сейчас возвращает русские man'ы в KOI8-R, а yelp считает, что ему дают уже готовый уникод. Можно исправить yelp, чтобы он узнал, что это KOI8-R, но лучше исправить man в сторону поддержки кодировок и затем исправить yelp так, чтобы он объяснял man'у, что ему нужен уникод. Теперь понятнее? Я только что на ru_RU.UTF-8 у себя воспроизвёл этот баг. однобитная - это Вы хватили. Остановимся на однобайтной. нет, у меня UTF-8 Я не стал уточнять детали, т.к. посчитал, что ошибка легко проверяется. (In reply to comment #8) > yelp никуда не возвращает текст, он его просто показывает, поэтому вопрос о > кодировке стоит не здесь. Просто man сейчас возвращает русские man'ы в KOI8-R, а yelp > считает, что ему дают уже готовый уникод. Можно исправить yelp, чтобы он узнал, > что это KOI8-R, но лучше исправить man в сторону поддержки кодировок и затем > исправить yelp так, чтобы он объяснял man'у, что ему нужен уникод. > Теперь понятнее? > Я только что на ru_RU.UTF-8 у себя воспроизвёл этот баг. > Кажется, не всё так просто -- попробуйте перекодировать к-н русскую ман-страницу в utf-8. Этот "готовый уникод" yelp покажет не лучше, чем koi8-r. (In reply to comment #8) > Просто man сейчас возвращает русские man'ы в KOI8-R Нет, man должен возвращать текст в локали пользователя, бишь если у вас ru_RU.UTF8, то и текст в ней должен приходить. Например: [c0der@xxx ~]$ man test >test.man [c0der@xxx ~]$ file test.man test.man: UTF-8 Unicode text, with overstriking У вас не так? Кто б сказал, кто тут самый виноватый ============================================================================= $ head -3 /home/aris/temp/gzip.1 .\" Перевод выполнен: 28.12.2000, Роман Медяков <merv@utb.ru> .\" Последнее обновление: 11.07.2003 Александр Блохин <sass@altlinux.ru> .TH "GZIP" "1" "" "" "Файловые утилиты GNU" =============================================================================== $ less /home/aris/temp/gzip.1 GZIP(1) ФайловÑе ÑÑилиÑÑ GNU GZIP(1) ÐÐÐÐÐÐÐÐ gzip, gunzip, zcat - ÑжаÑÑ Ð¸Ð»Ð¸ ÑаÑпаковаÑÑ ÑÐ°Ð¹Ð»Ñ Ð¡ÐÐТÐÐСÐС gzip [ -acdfhlLnNrtvV19 ] [ -S ÑÑÑÑÐ¸ÐºÑ ] [ Ñайл ... ] gunzip [ -acfhlLnNrtvV ] [ -S ÑÑÑÑÐ¸ÐºÑ ] [ Ñайл ... ] zcat [ -fhLV ] [ Ñайл ... ] ..... ========================================================================== $ man /home/aris/temp/gzip.1 GZIP(1) Файлов<D1>е <D1><D1>или<D1><D1> GNU GZIP(1) <D0>^H<D0><D0>^H<D0><D0>^H<D0><D0>^H<D0><D0>^H<D0><D0>^H<D0><D0>^H<D0><D0>^H<D0> gzip, gunzip, zcat - <D1>жа<D1><D1> или <D1>а<D1>пакова<D1><D1> <D1>айл<D1> <D0>^H<A1><D0>^H<D0><D0>^H<D0><D0>^HТ^H<A2><D0>^H<D0><D0>^H<D0><D0>^H<A1><D0>^H<D0><D0>^H<A1> gzip [ -acdfhlLnNrtvV19 ] [ -S <D1>^H<D1><D1>^H<D1><D1>^H<D1><D1>^H<D1><D0>^H<B8><D0>^Hк^H<BA><D1>^H<D1> ] [ <D1><D0> <B0><D0><B9><D0><BB> ... ] gunzip [ -acfhlLnNrtvV ] [ -S <D1>^H<D1><D1>^H<D1><D1>^H<D1><D1>^H<D1><D0>^H<B8><D0>^Hк^H<BA><D1>^H<D1> ] [ <D1>>^H (In reply to comment #11) > (In reply to comment #8) > > Просто man сейчас возвращает русские man'ы в KOI8-R > > Нет, man должен возвращать текст в локали пользователя, бишь если у вас ru_RU.UTF8, > то и текст в ней должен приходить. > > Например: > > [c0der@xxx ~]$ man test >test.man > [c0der@xxx ~]$ file test.man > test.man: UTF-8 Unicode text, with overstriking > > У вас не так? Однако так... Пойду-ка я в исходники yelp погляжу. Господи, да там же открытым текстом всё написано. /* FIXME: get the language */ language = "C"; /* default encoding if the language doesn't match below */ encoding = g_getenv("MAN_ENCODING"); if (encoding == NULL) encoding = "ISO-8859-1"; В общем, yelp вход от man воспринимает даже не как UTF-8, а как ISO-8859-1. В принципе, к этому уже можно писать патчи. Возможно, кстати, стоит взглянуть на natspec. Т.о. bug #16680 не мешает исправлению этого бага. (In reply to comment #14) > Господи, да там же открытым текстом всё написано. > /* FIXME: get the language */ > language = "C"; > > /* default encoding if the language doesn't match below */ > encoding = g_getenv("MAN_ENCODING"); > if (encoding == NULL) > encoding = "ISO-8859-1"; > > В общем, yelp вход от man воспринимает даже не как UTF-8, а как ISO-8859-1. В принципе, к > этому уже можно писать патчи. Возможно, кстати, стоит взглянуть на natspec. Yelp не использует man, а парсит файлы самостоятельно, и взять их кодировку ему неоткуда. fixed in 2.23.1-alt3 Мну... я понимаю, работа проделана большая.. Но: bash(1): ОПЦИИ Помимо однобуквенных опций командного интерпретатора, представленных в описании встроенной команды set, bash интерпретирует при вызове следующие опции: -c ������ а в терминале вижу: -c строка (In reply to comment #18) > Мну... я понимаю, работа проделана большая.. Но: > bash(1): Пока работы было на три строчки. > ОПЦИИ > Помимо однобуквенных опций командного интерпретатора, представленных > в описании встроенной команды set, bash > интерпретирует при вызове следующие опции: > -c ������ > > а в терминале вижу: > -c строка > Это вы уже придираетесь. может и придираюсь :-) но я не нарочно ;) Давайте не будем пока закрывать в таком состоянии, а? (In reply to comment #20) > может и придираюсь :-) но я не нарочно ;) > Давайте не будем пока закрывать в таком состоянии, а? > Разумеется. исправлено в yelp-2.23.91-alt1 Согласен предлагаю переоткрыть: страница convert(1) (пакет ImageMagic): SEE-ALSO ImageMagick(1) в yelp видно только (1) Вообще страница выглядит иначе (виноват новый man?): раньше, кажется, опции оканчивались разрывом абзаца, а сейчас это какая-то мешанина. почти четыре месяца - ни одного возражения. Переоткрываю. Причина - комент №24 man qemu-img в разделе "fmt" вообще не показывает то, что в двойных кавычках: "raw", "qcow2", "qcow" и т.д. Кто прокомментирует - где проблема? man2html с задачей справляется лучше. Передаю мейнтейнеру, который по этому багу уже сделал больше меня. (In reply to comment #27) > Передаю мейнтейнеру, который по этому багу уже сделал больше меня. Я не уверен, что смогу найти багу в yelp'овском парсере. Посоветуетесь с апстримом? |