2016-10-28 64 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

然後你很幸運,編碼碰巧匹配。 –

相關問題