From: | Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Mikko <mhannesy(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [GENERAL] trouble with to_char('L') |
Date: | 2010-03-02 14:40:46 |
Message-ID: | 4B8D236E.8090601@tpf.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general 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 returning the functions.
I'm suspicious if it's OK when errors occur in middle of the functions.
regards,
Hiroshi Inoue
From | Date | Subject | |
---|---|---|---|
Next Message | Antonio Goméz Soto | 2010-03-02 14:49:19 | Re: How to grant a user read-only access to a database? |
Previous Message | Pavel Stehule | 2010-03-02 12:35:00 | Re: need a query |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2010-03-02 14:42:38 | Re: USE_LIBXSLT in MSVC builds |
Previous Message | Theo Schlossnagle | 2010-03-02 14:37:12 | Re: double and numeric conversion |