質問

Teradataを使用して、Teradataクライアントを使用して実行すると、以下のクエリ出力「Altlüd」を使用します。

select name as name  from MYTABLE where selector=?

一方、Javaクライアント(Teradataドライバーを備えたJDBC)を使用してクエリを実行しようとすると、出力として「altl?d」を取得します。私は「UTF-8」チャーセットを使用しており、運がなくラテンチャーセットも試しました。

また、これをトラブルシューティングに試しました。

while (rs.next()) {
 System.out.println(rs.getString(1));
 Reader rd = rs.getCharacterStream(1);
 int charr = rd.read();
 while (charr >= 0) {
    System.out.println(charr + " = " + ((char) charr));
    charr = rd.read();
 }
}

そして、出力はです

altl?dersdorf 65 = a 108 = l 116 = t 108 = l 65533 =? 100 = d

生成された出力を見ると、SPL文字のINT値は65533であり、そうではないはずです。

実際、それはすべての特殊文字のために65533を返します。

手がかり/ポインターは大歓迎です。ありがとう!!!

役に立ちましたか?

解決

Unicode置換文字のようです U+FFFD. 。 JDBCクライアントとサーバーは、文字に同じエンコードを使用しません。クライアントはUTF-8を試しているようですが、サーバーはUTF以外の形式を提供します。

Teradataは知りませんが、エンコードやロケールのデータベースおよびサーバー設定を探す必要があります。

他のヒント

Charset = utf-16をクライアント側パラメーターとして使用してみてください。

簡単な方法の1つは、設定することです lc_all = lang = en_us.utf-16 そして、Javaプログラムを実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top