2016-10-28 242 views
0

我正在面对使用ODBC驱动程序的字符编码问题。 我试图从Excel 2013, 内部PostgreSQL服务器检索一些数据,但日文字符被乱码或替换为空字符串。使用PostgreSQL ODBC驱动程序进行编码(32位)

下面是我用:

  • [客户] Windows 7企业版32位和Excel 2013的32位
  • [ODBC驱动程序] psqlodbc_09_05_0400 86
  • [服务器] PostgreSQL 8.2.3中文上i686的-PC-Linux的GNU,由GCC GCC(GCC)3.4.6

编码设置在服务器上编译:

  • SERVER_ENCODING = SQL_ASCII
  • CLIENT_ENCODING = SJIS

注:

  • 无论驾驶者( “PostgreSQL的Unicode的” 也不是 “的PostgreSQL ANSI”)的工作。
    • SET CLIENT_ENCODING TO 'SJIS'
    • SET CLIENT_ENCODING TO 'EUC_JP'
    • SET:
    • 我已经无济于事分别设置如下字符串 “ConnSettings” 选项(在连接字符串) CLIENT_ENCODING = 'SJIS'
    • SET CLIENT_ENCODING = 'EUC_JP'

  • 我已经试过了 “pgAdmin的” 应用程序,但无法摆脱的乱码。

我该如何避免人物沾染?
任何意见将不胜感激。

回答

0

你的问题是SQL_ASCII的服务器编码。

使用此服务器编码,PostgreSQL不能识别编码,也不会执行字符转换,因此您的客户端会像数据库中那样接收数据。如果这是不正确的,你是运气不好。

正确的解决方案是使用不同的服务器编码,如EUC_JP或(更好)UTF8

客户端编码可能应该是SJIS

+0

谢谢你的评论@LaurenzAlbe。我的问题已通过以下解决方法解决:我的一位高级同事安装了旧版ODBC驱动程序的安装程序(我无法确定确切的版本,但其最新更新日期是2005年,因此可能在版本08 )。安装完成后,我可以在ODBC数据源管理器中选择“PostgreSQL”(不带ANSI/Unicode后缀)。除此之外,我在Excel中选择了“Microsoft Query”而不是“Data Connection Wizard”。这是摆脱人物gar only的唯一方法。 –

+0

然后你很幸运,编码碰巧匹配。 –

相关问题