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

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to