2016-10-28 43 views
0

ODBCドライバを使用した文字エンコーディングの問題に直面しています。 Excel 2013、 で社内のPostgreSQLサーバからデータを取得しようとしましたが、日本語の文字が文字化けしたり、空の文字列に置き換えられたりします。ここでPostgreSQL ODBCドライバ(32ビット)でのエンコーディング

は、私が使用しているものです:

  • [クライアント]のWindows 7エンタープライズ32ビット&エクセル2013の32ビット
  • [ODBCドライバー] psqlodbc_09_05_0400-x86の
  • [サーバー] PostgreSQLは上の8.2.3 i686の-pc-linux-gnuのように、サーバー上のGCCのgcc(GCC)3.4.6

エンコード設定でコンパイル:

  • SERVER_ENCODING = SQL_ASCII
  • CLIENT_ENCODING = SJIS

  • どちらドライバの( "PostgreSQLのユニコード" や "PostgreSQLのANSI")が働きました。
    • SETのCLIENT_ENCODING TO 'SJIS'
    • SETのCLIENT_ENCODING TO 'EUC_JP'
    • SET:
    • 私は無駄で(接続文字列で) "ConnSettings" オプションとは別に、以下の文字列を設定しましたCLIENT_ENCODING = 'SJIS' = 'EUC_JP'
    • SETのCLIENT_ENCODING

  • は、私が "pgAdminで" アプリを試してみたが、文字化けを取り除くことができませんでした。

文字の文字化けを避けるにはどうすればよいですか?
コメントをいただければ幸いです。

答えて

0

問題はサーバーのエンコードSQL_ASCIIです。

このサーバエンコーディングでは、PostgreSQLはエンコーディングを認識せず、文字変換を実行しないため、クライアントはデータベースと同じようにデータを受信します。それが間違っていれば、あなたは不運です。

正しい解決策は、EUC_JPまたは(より良い)UTF8のような別のエンコーディングエンコーディングを使用することです。

クライアントのエンコーディングは、おそらくSJISである必要があります。

+0

@LaurenzAlbeコメントありがとうございました。私の問題は次の回避策で解決しました。私の上級仲間の1人が古いバージョンのODBCドライバのインストーラを持っていました(私は正確なバージョンを特定できませんでしたが、最終更新日は2005年でした)。インストール後、ODBCデータソース管理者でANSI/Unicodeのような接尾辞を付けずに "PostgreSQL"を選択することができました。その使用に加えて、Excelで「データ接続ウィザード」ではなく「Microsoft Query」を選択しました。これは、キャラクターが文字化けするのを防ぐための唯一の方法でした。 –

+0

あなたはエンコードが一致することができて幸運です。 –

関連する問題