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 DBA Team |