Re: [GENERAL] trouble with to_char('L')

Поиск
Список
Период
Сортировка
От Hiroshi Inoue
Тема Re: [GENERAL] trouble with to_char('L')
Дата
Msg-id 4B8D236E.8090601@tpf.co.jp
обсуждение исходный текст
Ответ на Re: [GENERAL] trouble with to_char('L')  (Bruce Momjian <bruce@momjian.us>)
Ответы Re: [GENERAL] trouble with to_char('L')  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-hackers
Bruce Momjian wrote:
> Hiroshi Inoue wrote:
>> Bruce Momjian wrote:
>>> Bruce Momjian wrote:
>>>> Hiroshi Inoue wrote:
>>>>> Bruce Momjian wrote:
>>>>>> Hiroshi Inoue wrote:
>>>>>>> Bruce Momjian wrote:
>>>>>>>> Where are we on this issue?
>>>>>>> Oops I forgot it completely.
>>>>>>> I have a little improved version and would post it tonight.
>>>>>> Ah, very good.  Thanks.
>>>>> Attached is an improved version.
>>>> I spent many hours on this patch and am attaching an updated version.
>>>> I have restructured the code and added many comments, but this is the
>>>> main one:
>>>>
>>>>     *  Ideally, the server encoding and locale settings would
>>>>     *  always match.  Unfortunately, WIN32 does not support UTF-8
>>>>     *  values for setlocale(), even though PostgreSQL runs fine with
>>>>     *  a UTF-8 encoding on Windows:
>>>>     *
>>>>     *      http://msdn.microsoft.com/en-us/library/x99tb11d.aspx
>>>>     *
>>>>     *  Therefore, we must set LC_CTYPE to match LC_NUMERIC and
>>>>     *  LC_MONETARY, call localeconv(), and use mbstowcs() to
>>>>     *  convert the locale-aware string, e.g. Euro symbol, which
>>>>     *  is not in UTF-8 to the server encoding.
>>>>
>>>> I need someone with WIN32 experience to review and test this patch.
>>> I don't understand why cache_locale_time() works on Windows.  It sets
>>> the LC_CTYPE but does not do any encoding coversion.
>> Doesn't strftime_win32 do the conversion?
> 
> Oh, I now see strftime is redefined as a macro in that C files.  Thanks.
> 
>>> Do month and
>>> day-of-week names not work either, or do they work and the encoding
>>> conversion for numeric/money, e.g. Euro, it not necessary?
>> db_strdup does the conversion.
> 
> Should we pull the encoding conversion into a separate function and have
> strftime_win32() and db_strdup() both call it?

We may be able to pull the conversion WideChars => UTF8 =>
a PG encoding into an function.

BTW both PGLC_localeconv() and cache_locale_time() save the current LC_CTYPE first and restore them just before
returningthe functions.
 
I'm suspicious if it's OK when errors occur in middle of the functions.

regards,
Hiroshi Inoue


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

Предыдущее
От: Theo Schlossnagle
Дата:
Сообщение: Re: double and numeric conversion
Следующее
От: Tom Lane
Дата:
Сообщение: Re: USE_LIBXSLT in MSVC builds