aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/mb/mbutils.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index e91c8a2a58c..6834119386d 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -4,7 +4,7 @@
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
*
- * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.59 2006/10/04 00:30:02 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.59.2.1 2008/05/27 12:24:44 mha Exp $
*/
#include "postgres.h"
@@ -603,6 +603,25 @@ SetDatabaseEncoding(int encoding)
DatabaseEncoding = &pg_enc2name_tbl[encoding];
Assert(DatabaseEncoding->encoding == encoding);
+
+ /*
+ * On Windows, we allow UTF-8 database encoding to be used with any
+ * locale setting, because UTF-8 requires special handling anyway.
+ * But this means that gettext() might be misled about what output
+ * encoding it should use, so we have to tell it explicitly.
+ *
+ * In future we might want to call bind_textdomain_codeset
+ * unconditionally, but that requires knowing how to spell the codeset
+ * name properly for all encodings on all platforms, which might be
+ * problematic.
+ *
+ * This is presently unnecessary, but harmless, on non-Windows platforms.
+ */
+#ifdef ENABLE_NLS
+ if (encoding == PG_UTF8)
+ if (bind_textdomain_codeset("postgres", "UTF-8") == NULL)
+ elog(LOG, "bind_textdomain_codeset failed");
+#endif
}
void