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