aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2003-09-29 18:21:33 +0000
committerBruce Momjian <bruce@momjian.us>2003-09-29 18:21:33 +0000
commitf3db6065921a569b4dd5b2b7b657df24bdd781dc (patch)
treefcc7c1a02b11567cce79e735627aead9412c47a9
parenta17b53753e4bd1b5b83e838832505f992d3a4253 (diff)
downloadpostgresql-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.sgml29
-rw-r--r--src/bin/psql/startup.c33
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