On Windows, if the encoding implied by locale is not allowed as a

server-encoding, fall back to UTF-8. It happens at least with the Chinese
locale, which implies BIG5. This is safe, because on Windows all locales
are compatible with UTF-8.
This commit is contained in:
Heikki Linnakangas 2011-04-15 20:44:13 +03:00
parent 3affae58b7
commit 1f943dc8fe
1 changed files with 14 additions and 1 deletions

View File

@ -2906,7 +2906,19 @@ main(int argc, char *argv[])
}
else if (!pg_valid_server_encoding_id(ctype_enc))
{
/* We recognized it, but it's not a legal server encoding */
/*
* We recognized it, but it's not a legal server encoding.
* On Windows, UTF-8 works with any locale, so we can fall back
* to UTF-8.
*/
#ifdef WIN32
printf(_("Encoding %s implied by locale is not allowed as a server-side encoding.\n"
"The default database encoding will be set to %s instead.\n"),
pg_encoding_to_char(ctype_enc),
pg_encoding_to_char(PG_UTF8));
ctype_enc = PG_UTF8;
encodingid = encodingid_to_string(ctype_enc);
#else
fprintf(stderr,
_("%s: locale %s requires unsupported encoding %s\n"),
progname, lc_ctype, pg_encoding_to_char(ctype_enc));
@ -2915,6 +2927,7 @@ main(int argc, char *argv[])
"Rerun %s with a different locale selection.\n"),
pg_encoding_to_char(ctype_enc), progname);
exit(1);
#endif
}
else
{