Thread: odbc problem on Japanese windows machine
Hi,
I am trying to use postgres odbc driver on windows Japanese machine, to test connection to a remote postgres database. The database has latin1 encoding.
Connection tests to databases with latin1 encoding fail with this error message:
fatal: conversion between SJIS and LATIN1 is not supported
Connection tests to databases with utf8 encoding succeed.
I checked both server source and odbc driver source and saw that the message comes from postgres server code.
It seems that the postgres odbc sends SJIS characters to the latin1 database and it cannot convert.
I know that the next command retrieves with the same error:
alter database <db_name> set client_encoding="SJIS"
Is there any switch in the code to bypass local machine encoding?
Why does it send Japanese encoding?
Postgres odbc driver is not Japanese application. For what the conversion is needed?
Is there any way to overcome this problem?
Steps to reproduce error message:
1. Put postgres odbc drivers (psqlodbc30a.dll and psqlodbc35w.dll) under c:\windows\system32
2. Update machine registry with next values:
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"PostgreSQL ANSI"="Installed"
"PostgreSQL Unicode"="Installed"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL ANSI]
"APILevel"="1"
"ConnectFunctions"="YYN"
"Driver"="c:\windows\system32\PSQLODBC30A.DLL"
"DriverODBCVer"="03.00"
"FileUsage"="0"
"Setup"=" c:\windows\system32\PSQLODBC30A.DLL"
"SQLLevel"="1"
"UsageCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode]
"APILevel"="1"
"ConnectFunctions"="YYN"
"Driver"=" c:\windows\system32\PSQLODBC35W.DLL"
"DriverODBCVer"="03.51"
"FileUsage"="0"
"Setup"=" c:\windows\system32\PSQLODBC35W.DLL"
"SQLLevel"="1"
"UsageCount"=dword:00000001
3. Create datasource and test connection to latin1 encoding database:
Settings -> administrative tools -> data source (ODBC)
And then add system data source with postgres driver. Configure this data source to
connect to latin1 postgres database.
Thanks,
Yuval Sofer
BMC Software
CTM&D Business Unit
DBA Team
972-52-4286-282
yuval_sofer@bmc.com
Yuval Sofer
BMC Software
CTM&D Business Unit
DBA Team
972-52-4286-282
yuval_sofer@bmc.com
Hi. Sorry late reaction... It is the conversion which is not supported by PostgreSQL. It does not have the conversion definition between LATIN1 and SJIS. See, http://www.postgresql.org/docs/8.2/static/multibyte.html#AEN24142 Regards, Hiroshi Saito ----- Original Message ----- From: Sofer, Yuval To: pgsql-odbc@postgresql.org Sent: Thursday, December 13, 2007 10:51 PM Subject: [ODBC] odbc problem on Japanese windows machine Hi, I am trying to use postgres odbc driver on windows Japanese machine, to test connection to a remote postgres database. The database has latin1 encoding. Connection tests to databases with latin1 encoding fail with this error message: fatal: conversion between SJIS and LATIN1 is not supported Connection tests to databases with utf8 encoding succeed. I checked both server source and odbc driver source and saw that the message comes from postgres server code. It seems that the postgres odbc sends SJIS characters to the latin1 database and it cannot convert. I know that the next command retrieves with the same error: alter database <db_name> set client_encoding="SJIS" Is there any switch in the code to bypass local machine encoding? Why does it send Japanese encoding? Postgres odbc driver is not Japanese application. For what the conversion is needed? Is there any way to overcome this problem? Steps to reproduce error message: 1. Put postgres odbc drivers (psqlodbc30a.dll and psqlodbc35w.dll) under c:\windows\system32 2. Update machine registry with next values: [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] "PostgreSQL ANSI"="Installed" "PostgreSQL Unicode"="Installed" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL ANSI] "APILevel"="1" "ConnectFunctions"="YYN" "Driver"="c:\windows\system32\PSQLODBC30A.DLL" "DriverODBCVer"="03.00" "FileUsage"="0" "Setup"=" c:\windows\system32\PSQLODBC30A.DLL" "SQLLevel"="1" "UsageCount"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL Unicode] "APILevel"="1" "ConnectFunctions"="YYN" "Driver"=" c:\windows\system32\PSQLODBC35W.DLL" "DriverODBCVer"="03.51" "FileUsage"="0" "Setup"=" c:\windows\system32\PSQLODBC35W.DLL" "SQLLevel"="1" "UsageCount"=dword:00000001 3. Create datasource and test connection to latin1 encoding database: Settings -> administrative tools -> data source (ODBC) And then add system data source with postgres driver. Configure this data source to connect to latin1 postgres database. Thanks, Yuval Sofer BMC Software CTM&D Business Unit DBA Team 972-52-4286-282 yuval_sofer@bmc.com Yuval Sofer BMC Software CTM&D Business Unit DBA Team 972-52-4286-282 yuval_sofer@bmc.com
Sofer, Yuval wrote: > Hi, > > I am trying to use postgres odbc driver on windows Japanese machine, to > test connection to a remote postgres database. The database has latin1 > encoding. > > Connection tests to databases with latin1 encoding fail with this error > message: > > fatal: conversion between SJIS and LATIN1 is not supported Are you testing the ANSI version driver ? If so, please set the *Connect Settings* option like set client_encoding to 'XXXX' (XXXX e.g. SQL_ASCII, LATIN1 etc). You can see the example (SJIS case) at http://www.geocities.jp/inocchichichi/psqlodbc/encoding.jpg . However I'm not sure if you can see LATIN1 specific characters using Japanese machine. regards, Hiroshi Inoue
Hi, Thanks you very much ! you solution did it. Regards Yuval -----Original Message----- From: Hiroshi Inoue [mailto:inoue@tpf.co.jp] Sent: Friday, December 14, 2007 10:15 AM To: Sofer, Yuval Cc: pgsql-odbc@postgresql.org Subject: Re: [ODBC] odbc problem on Japanese windows machine Sofer, Yuval wrote: > Hi, > > I am trying to use postgres odbc driver on windows Japanese machine, to > test connection to a remote postgres database. The database has latin1 > encoding. > > Connection tests to databases with latin1 encoding fail with this error > message: > > fatal: conversion between SJIS and LATIN1 is not supported Are you testing the ANSI version driver ? If so, please set the *Connect Settings* option like set client_encoding to 'XXXX' (XXXX e.g. SQL_ASCII, LATIN1 etc). You can see the example (SJIS case) at http://www.geocities.jp/inocchichichi/psqlodbc/encoding.jpg . However I'm not sure if you can see LATIN1 specific characters using Japanese machine. regards, Hiroshi Inoue