diff options
author | Bruce Momjian <bruce@momjian.us> | 2003-09-29 18:21:33 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2003-09-29 18:21:33 +0000 |
commit | f3db6065921a569b4dd5b2b7b657df24bdd781dc (patch) | |
tree | fcc7c1a02b11567cce79e735627aead9412c47a9 | |
parent | a17b53753e4bd1b5b83e838832505f992d3a4253 (diff) | |
download | postgresql-f3db6065921a569b4dd5b2b7b657df24bdd781dc.tar.gz postgresql-f3db6065921a569b4dd5b2b7b657df24bdd781dc.zip |
> >
> > a) Write documentation how the win32 console needs to be set up so that
> > psql can handle 8-bit characters.
> > Where should it be added? The Section "Installation on Windows" in the
> > Administrator's Guide seems natural to me.
> >
> > b) Add code to psql that prints a warning on startup of psql when the
> > console codepage differs from the windows codepage, something like
> >
> > Warning: Console codepage (850) differs from windows codepage (1252)
> > 8-bit characters will not work correctly. See PostgreSQL
> > documentation "Installation on Windows" for details.
>
Attached are two patches:
- installdoc.patch contains an additional paragraph on the win32 console
codepage for the chapter "Installation on Windows"
Due to a lack of SGML-tools, I have only edited the text and not tested
the SGML code - please check it before merging into the CVS branch.
- psqlcodepage.patch adds the warning about a problematic codepage to psql.
Christoph Dalitz
-rw-r--r-- | doc/src/sgml/install-win32.sgml | 29 | ||||
-rw-r--r-- | src/bin/psql/startup.c | 33 |
2 files changed, 60 insertions, 2 deletions
diff --git a/doc/src/sgml/install-win32.sgml b/doc/src/sgml/install-win32.sgml index 16dfdbdc8f6..21b3daad4e3 100644 --- a/doc/src/sgml/install-win32.sgml +++ b/doc/src/sgml/install-win32.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/install-win32.sgml,v 1.12 2003/09/29 18:18:35 momjian Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/install-win32.sgml,v 1.13 2003/09/29 18:21:33 momjian Exp $ --> <chapter id="install-win32"> @@ -107,6 +107,33 @@ $Header: /cvsroot/pgsql/doc/src/sgml/install-win32.sgml,v 1.12 2003/09/29 18:18: C++, just right-click on the project and choose to add it.) </para> + <para> + <application>psql</application> is compiled as a "console application". As + the win32 console windows use a different encoding than the rest of the + system, you must take special care when using 8-bit characaters (eg. german + Umlauts) at the <application>psql</application> prompt. When + <application>psql</application> detects a problematic console codepage, it + will warn you at startup. To change the console codepage, two things are + neccessary: + + <variablelist> + <varlistentry> + <listitem> + Set the codepage with <userinput>cmd.exe /c chcp 1252</userinput> + (1252 is the german value, replace it with your value). If you are using + cygwin, you can put this command in <filename>/etc/profile</filename>. + </listitem> + </varlistentry> + <varlistentry> + <listitem> + Set the console font to "Lucida Console", because the raster font + does not work with the ANSI codepage. + </listitem> + </varlistentry> + </variablelist> + + </para> + </chapter> <!-- Keep this comment at the end of the file diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index afee6d62a53..1aee5bc8a9a 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.79 2003/08/07 21:11:58 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.80 2003/09/29 18:21:33 momjian Exp $ */ #include "postgres_fe.h" @@ -80,6 +80,10 @@ static void showVersion(void); static void printSSLInfo(void); #endif +#ifdef WIN32 +static void + checkWin32Codepage(void); +#endif /* * @@ -270,6 +274,9 @@ main(int argc, char *argv[]) #ifdef USE_SSL printSSLInfo(); #endif +#ifdef WIN32 + checkWin32Codepage(); +#endif } /* Default values for variables that are used in interactive case */ @@ -621,3 +628,27 @@ printSSLInfo(void) } #endif + + + +/* + * checkWin32Codepage + * + * Prints a warning when win32 console codepage differs from Windows codepage + */ +#ifdef WIN32 +static void +checkWin32Codepage(void) +{ + unsigned int wincp, concp; + + wincp = GetACP(); + concp = GetConsoleCP(); + if (wincp != concp) { + printf("Warning: Console codepage (%u) differs from windows codepage (%u)\n" + " 8-bit characters will not work correctly. See PostgreSQL\n" + " documentation \"Installation on Windows\" for details.\n\n", + concp, wincp); + } +} +#endif |