0

我试图找到一种方法来指示 ODBC 驱动程序 - Datadirect ODBC 使用 win1251 进行客户端会话。

用户指南中提到的方法有:

  1. 在 psql 中使用 \encoding 命令,它允许您即时更改客户端编码。
  2. 使用 SET client_encoding TO: => SET CLIENT_ENCODING TO 'value';
  3. 使用 PGCLIENTENCODING 环境变量。
  4. 在 postgresql.conf 文件中设置配置参数 client_encoding

但据我了解选项 1 和 3 不适合 ODBC 驱动程序,选项 2 我也无法使用 - 因为我使用 SAS 并且这个引擎不允许我执行手动编辑的 SQL - 它使用了很多自动代码生成。

我已经在 postgresql.conf 文件中尝试了选项 client_encoding,而且我已经厌倦了在 psql 管理会话中执行 follow clommand:alter user sasuser SET client_encoding to WIN1251;但没有任何变化 - 默认情况下客户端编码仍然是UTF8......

目前在 Datadirect ODBC.ini 文件中,我有以下字符串:

IANAAppCodePage=2251

有人可以帮我吗?

4

1 回答 1

2

这绝对可以解决问题:

ALTER USER sasuser SET client_encoding TO WIN1251;

只有剩下的解释可以是:

  • 实际上,您正在使用不同的用户连接到数据库。
  • 在连接期间的某个时间点client_encoding被显式设置为另一个值。
  • 您正在连接到错误的数据库集群(相同的 IP?相同的端口?)

To find out, set log_statements = all, make the server cluster reload, start a session with your user-unfriendly tool, and check the database log, if and what was actually communicated to the server. Don't forget to reset log_statements or your log files will grow huge.


Or it is all just a typo in Datadirect ODBC.ini:

IANAAppCodePage=2251

That supposed to be 1251?

Nope. IANAAppCodePage MIBenum 2251 stands for "WINDOWS_1251". That's not it.

于 2011-11-21T13:36:13.847 回答