Re: [GENERAL] trouble with to_char('L')
От | Takahiro Itagaki |
---|---|
Тема | Re: [GENERAL] trouble with to_char('L') |
Дата | |
Msg-id | 20100419105942.A6B4.52131E4D@oss.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: [GENERAL] trouble with to_char('L') (Magnus Hagander <magnus@hagander.net>) |
Ответы |
Re: [GENERAL] trouble with to_char('L')
|
Список | pgsql-hackers |
Magnus Hagander <magnus@hagander.net> wrote: > But I'm unsure how that would work. We're talking about the output of > localeconv(), right? I don't see a version of localeconv() that does > wide chars anywhere. (You can't just set LC_CTYPE and use the regular > function - Windows has a separate set of functions for dealing with > UTF16). Yeah, msvcrt doesn't have wlocaleconv :-( . Since localeconv() returns characters in the encoding specified in LC_TYPE, we need to hande the issue with codes something like: 1. setlocale(LC_CTYPE, lc_monetary) 2. setlocale(LC_MONETARY, lc_monetary) 3. lc = localeconv() 4. pg_do_encoding_conversion(lc->xxx, FROM pg_get_encoding_from_locale(lc_monetary), TO GetDatabaseEncoding()) 5. Revert LC_CTYPE and LC_MONETARY. Another idea is to use GetLocaleInfoW() [1], that is win32 native locale functions, instead of the libc one. It returns locale characters in wide chars, so we can safely convert them as UTF16->UTF8->db. But it requires an additional branch in our locale codes only for Windows. [1] http://msdn.microsoft.com/en-us/library/dd318101 Regards, --- Takahiro Itagaki NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: