Re: [bug fix] strerror() returns ??? in a UTF-8/C database with LC_MESSAGES=non-ASCII

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема Re: [bug fix] strerror() returns ??? in a UTF-8/C database with LC_MESSAGES=non-ASCII
Дата
Msg-id 522DDC55.4020104@gmx.net
обсуждение исходный текст
Ответ на Re: [bug fix] strerror() returns ??? in a UTF-8/C database with LC_MESSAGES=non-ASCII  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [bug fix] strerror() returns ??? in a UTF-8/C database with LC_MESSAGES=non-ASCII  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On 9/9/13 10:25 AM, Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
>> My suggestion in this matter is to disable gettext processing when
>> LC_CTYPE is set to C.  We could log a warning when LC_MESSAGES is set to
>> something and LC_CTYPE is set to C.  Or just do the warning and keep
>> logging.  Something like that.
> 
> Meh.  Seems that would only prevent one specific instance of the general
> problem that strerror can fail to translate its result.  Other locale
> combinations might create the same kind of failure.

True.  There isn't much we can do, really.  If your LC_MESSAGES and
LC_CTYPE don't get along, you get what you asked for.  This isn't
specific to PostgreSQL:

$ LC_CTYPE=C LC_MESSAGES=ja_JP.utf8 ls --foo
ls: ???????????`--foo'??
???? `ls --help' ????????.

> More generally, though, is strerror actually using gettext at all, or
> some homegrown implementation?  As I said upthread, I would expect that
> gettext("foo") returns the given ASCII string "foo" if it fails to create
> a translated version.  This is evidently not what's happening in strerror.

That is correct.  It returns the original string if it cannot find a
translation or the character conversion of the translation fails.  But
the character conversion to "US-ASCII//TRANSLIT" does not fail.  It just
produces an undesirable result.  If you patch the gettext source to
remove the //TRANSLIT, you will get the result you want.





В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [bug fix] strerror() returns ??? in a UTF-8/C database with LC_MESSAGES=non-ASCII
Следующее
От: Blake Smith
Дата:
Сообщение: Re: Hstore: Query speedups with Gin index