]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
> >
authorBruce Momjian <bruce@momjian.us>
Mon, 29 Sep 2003 18:21:33 +0000 (18:21 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 29 Sep 2003 18:21:33 +0000 (18:21 +0000)
> >  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

doc/src/sgml/install-win32.sgml
src/bin/psql/startup.c

index 16dfdbdc8f6b731a3c63dce44d127f8d7d0d1e66..21b3daad4e38bbc9a0f776059c9b9d82b85fdd94 100644 (file)
@@ -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
index afee6d62a537ccf2bb77c3a09321bbe2d4bf1b62..1aee5bc8a9a2c0cc7dc2a719de72514268eb5b98 100644 (file)
@@ -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
 
 /*
  *
@@ -269,6 +273,9 @@ main(int argc, char *argv[])
                                   pset.progname, PG_VERSION);
 #ifdef USE_SSL
                        printSSLInfo();
+#endif
+#ifdef WIN32
+                       checkWin32Codepage();
 #endif
                }
 
@@ -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