From 1e22e605050eded6ed49f049678782dba9e864cf Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 4 Dec 2006 22:23:40 +0000
Subject: [PATCH] Patch of Win32 Encoding problem for server messages using
 FormatMessage() (This should have been in 8.2.0, patched to 8.2.X and HEAD):

I think this problem to be complex....
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00042.php

FormatMessage of windows cannot consider the encoding of the database.
However, I should try the solution now. It is necessary to clear the
problem.

Multi character-code exists together in message and log. It doesn't
consider
the data base encoding that the user intended....

The user in multi-byte country can try this.
http://inet.winpg.jp/~saito/pg_bug/MessageCheck.c

That is, it is likely to become it in this manner.(Japanese)
http://inet.winpg.jp/~saito/pg_bug/FormatMessage998.png

Hiroshi Saito
---
 src/backend/port/dynloader/win32.c | 4 ++--
 src/backend/port/win32/socket.c    | 4 ++--
 src/interfaces/libpq/win32.c       | 2 +-
 src/port/dirmod.c                  | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/backend/port/dynloader/win32.c b/src/backend/port/dynloader/win32.c
index 72d27fddcdc..980b424b97b 100644
--- a/src/backend/port/dynloader/win32.c
+++ b/src/backend/port/dynloader/win32.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/backend/port/dynloader/win32.c,v 1.8 2006/06/07 22:24:43 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/backend/port/dynloader/win32.c,v 1.9 2006/12/04 22:23:40 momjian Exp $ */
 
 #include "postgres.h"
 
@@ -18,7 +18,7 @@ set_dl_error(void)
 					  FORMAT_MESSAGE_FROM_SYSTEM,
 					  NULL,
 					  err,
-					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+					  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
 					  last_dyn_error,
 					  sizeof(last_dyn_error) - 1,
 					  NULL) == 0)
diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c
index 6489c64daee..0dc62a48119 100644
--- a/src/backend/port/win32/socket.c
+++ b/src/backend/port/win32/socket.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.14 2006/10/13 13:59:47 teodor Exp $
+ *	  $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.15 2006/12/04 22:23:40 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -582,7 +582,7 @@ pgwin32_socket_strerror(int err)
 	if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE,
 					  handleDLL,
 					  err,
-					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+					  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
 					  wserrbuf,
 					  sizeof(wserrbuf) - 1,
 					  NULL) == 0)
diff --git a/src/interfaces/libpq/win32.c b/src/interfaces/libpq/win32.c
index a4ec2ebb70c..00f0e0073d2 100644
--- a/src/interfaces/libpq/win32.c
+++ b/src/interfaces/libpq/win32.c
@@ -309,7 +309,7 @@ winsock_strerror(int err, char *strerrbuf, size_t buflen)
 		success = 0 != FormatMessage(
 									 flags,
 									 dlls[i].handle, err,
-								   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+								   MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
 									 strerrbuf, buflen - 64,
 									 0
 			);
diff --git a/src/port/dirmod.c b/src/port/dirmod.c
index 3934b5cf7dd..5f4f97e9c1a 100644
--- a/src/port/dirmod.c
+++ b/src/port/dirmod.c
@@ -10,7 +10,7 @@
  *	Win32 (NT, Win2k, XP).	replace() doesn't work on Win95/98/Me.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/port/dirmod.c,v 1.44 2006/11/08 20:12:05 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/port/dirmod.c,v 1.45 2006/12/04 22:23:40 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -254,7 +254,7 @@ pgsymlink(const char *oldpath, const char *newpath)
 		errno = 0;
 		FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
 					  NULL, GetLastError(),
-					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+					  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
 					  (LPSTR) & msg, 0, NULL);
 #ifndef FRONTEND
 		ereport(ERROR,
-- 
GitLab