Bug 12177 - Ошибка в выводе полей в utf8
Summary: Ошибка в выводе полей в utf8
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: gnupg (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 10416
  Show dependency tree
 
Reported: 2007-06-28 14:38 MSD by Andriy Stepanov (stanv)
Modified: 2010-02-11 05:04 MSK (History)
4 users (show)

See Also:


Attachments
Исправляет ошибку (897 bytes, patch)
2007-06-28 14:43 MSD, Andriy Stepanov (stanv)
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andriy Stepanov (stanv) 2007-06-28 14:38:42 MSD
В документации по gnupg указано, что поля такие как UserID могуть быть
закодированы в utf8

Также, в man 1 gpg  указано:
 --with-colons
              Print  key  listings delimited by colons. Note that the output will
              be encoded in UTF-8 regardless of  any  --display-charset  setting.
              This  format  is useful when GnuPG is called from scripts and other
              programs as it is easily machine parsed. The details of this format
              are  documented in the file `doc/DETAILS', which is included in the
              GnuPG source distribution.


т.е. поля выводится должны в utf8

Но при выводе поля искажаются.
Steps to Reproduce:
1.Сгенерировать ключ с русским UserID (gpg --gen-key)
2.Вывести $gpg --list-key --with-colons
Actual Results:  
на месте UserID будут крякозябры

Expected Results:  
UserID должен быть в utf8
Comment 1 Andriy Stepanov (stanv) 2007-06-28 14:43:47 MSD
Created attachment 2061 [details]
Исправляет ошибку

Данная ошибка была обнаружена благодаря:

https://bugzilla.altlinux.org/show_bug.cgi?id=10416
http://bugs.kde.org/show_bug.cgi?id=144368

Тоесть kgpg не отображает нормально UserId если он не в ASCII.

Проблема заключается в том, что gpg c вызовом --list-key --with-colons изменяет
так строки utf8, что они не стоновятся не правильными.

Посмотрите пожалуйста патч.
Comment 2 Dmitry V. Levin 2008-01-02 01:14:55 MSK
(In reply to comment #0)
> В документации по gnupg указано, что поля такие как UserID могуть быть
> закодированы в utf8
> 
> Также, в man 1 gpg  указано:
>  --with-colons
>               Print  key  listings delimited by colons. Note that the output will
>               be encoded in UTF-8 regardless of  any  --display-charset  setting.
>               This  format  is useful when GnuPG is called from scripts and other
>               programs as it is easily machine parsed. The details of this format
>               are  documented in the file `doc/DETAILS', which is included in the
>               GnuPG source distribution.
> 
> 
> т.е. поля выводится должны в utf8

Согласно вышеупомянутому doc/DETAILS, User-ID кодируется следующим образом:
"The value is quoted like a C string to avoid control characters" и далее по
тексту.  Не могу сказать, что авторы это хорошо придумали, результат такой
кодировки не очень удобен ни для непосредственного восприятия, ни для разбора,
однако они документировали именно такое поведение.

Если уж квотить правильно, то следовало бы заменить
*p < 0x20 || (*p >= 0x7f && *p < 0xa0)
на аналог isprint() в локали C:
*p < 0x20 || *p >= 0x7f
Comment 3 Dmitry V. Levin 2010-02-11 05:04:03 MSK
Резюмирую: код соответствует документации, если в ней прочесть то, что имели в виду авторы.  Проблемы не вижу, баг закрываю.