Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.

Поиск
Список
Период
Сортировка
От Hiroshi Inoue
Тема Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.
Дата
Msg-id 492A0499.1010601@tpf.co.jp
обсуждение исходный текст
Ответ на pgsql: Explicitly bind gettext() to the UTF8 locale when in use.  (mha@postgresql.org (Magnus Hagander))
Ответы Re: pgsql: Explicitly bind gettext() to the UTF8 locale when in use.  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-committers
Hi Magnus and all,

Magnus Hagander wrote:
> Log Message:
> -----------
> Explicitly bind gettext() to the  UTF8 locale when in use.
> This is required on Windows due to the special locale
> handling for UTF8 that doesn't change the full environment.

Thanks to this change UTF-8 case was solved but Japanese users
are still unhappy with Windows databases with EUC_JP encoding.
Shift_JIS which is a Japanese encoding under Windows doesn't
match any server encoding and causes a crash with the use of
gettext. So Saito-san removed ja message catalog just before
the 8.3 release.

Attached is a simple patch to avoid the crash and enable the
use of Japanese message catalog.
Please apply the patch if there's no problem.

regards,
Hiroshi Inoue

> Fixes crash with translated error messages per bugs 4180
> and 4196.
>
> Tom Lane
>
> Modified Files:
> --------------
>     pgsql/src/backend/utils/mb:
>         mbutils.c (r1.70 -> r1.71)
>         (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mb/mbutils.c?r1=1.70&r2=1.71)


*** mbutils.c.orig    Sun Nov 23 08:42:57 2008
--- mbutils.c    Sun Nov 23 13:52:41 2008
***************
*** 825,830 ****
--- 825,832 ----
  void
  SetDatabaseEncoding(int encoding)
  {
+     const char *target_codeset = NULL;
+
      if (!PG_VALID_BE_ENCODING(encoding))
          elog(ERROR, "invalid database encoding: %d", encoding);

***************
*** 846,852 ****
       */
  #ifdef ENABLE_NLS
      if (encoding == PG_UTF8)
!         if (bind_textdomain_codeset("postgres", "UTF-8") == NULL)
              elog(LOG, "bind_textdomain_codeset failed");
  #endif
  }
--- 848,860 ----
       */
  #ifdef ENABLE_NLS
      if (encoding == PG_UTF8)
!         target_codeset = "UTF-8";
! #ifdef    WIN32
!     else if (encoding == PG_EUC_JP)
!         target_codeset = "EUC_JP";
! #endif /* WIN32 */
!     if (NULL != target_codeset)
!         if (bind_textdomain_codeset("postgres", target_codeset) == NULL)
              elog(LOG, "bind_textdomain_codeset failed");
  #endif
  }

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

Предыдущее
От: h-saito@pgfoundry.org (User H-saito)
Дата:
Сообщение: psqlodbc - psqlodbc: The specification method of the ROLLBACK option is
Следующее
От: fxjr@pgfoundry.org (User Fxjr)
Дата:
Сообщение: npgsql - Npgsql: Fixed problem when calling functions with inout or