SAS / ACCESS& Greenplum的客户端编码(PostgreSQL)

时间:2011-11-21 13:01:40

标签: postgresql character-encoding odbc sas greenplum

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

“使用指南”中提到的方法有:

  1. 在psql中使用\ encoding命令,它允许您动态更改客户端编码。
  2. 使用SET client_encoding TO:=> SET CLIENT_ENCODING为'value';
  3. 使用PGCLIENTENCODING环境变量。
  4. 在postgresql.conf文件中设置配置参数client_encoding
  5. 但据我所知,选项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
    

    有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

这绝对可以解决问题:

ALTER USER sasuser SET client_encoding TO WIN1251;

只有剩下的解释可以是:

  • 您实际上是使用其他用户连接到数据库。
  • 在连接期间的某个时刻client_encoding被明确设置为另一个值。
  • 您正在连接到错误的数据库群集(相同的IP?同一端口?)

要查找,请设置log_statements = all,重新加载服务器群集,使用用户不友好的工具启动会话,并检查数据库日志,是否以及实际传达给服务器的内容。 不要忘记重置log_statements,否则您的日志文件会变得庞大。


或者只是Datadirect ODBC.ini中的拼写错误

IANAAppCodePage=2251

那应该是1251?

不。 IANAAppCodePage MIBenum 2251代表“WINDOWS_1251”。那不是它。