[pgsql-jp: 25208] Windows上JDBCでのエンコーディング

YTP ytp @ vc-net.ne.jp
2002年 3月 11日 (月) 01:59:01 JST


田中良浩 です。

★表題を変えました。

>> この値を受け取ったアプリケーションが何かの理由で
>> エンコーディングを指定せず、つまりデフォルトエンコーディングである
>> "MS932"を使って再度変換をかけると、
>
>その「変換をかける」という行為自体がそもそも誤りではないでしょうか?つま
>り、ここで指定している"MS932"自体が元々どのエンコーディングであるかを無
>視しているため問題が起こる、といいたいのです。

最初に結論を申し上げますと、
Postgreが提供するJDBCの内部でのデコードは、
プラットフォームに合わせたデフォルトエンコーディングを使って
処理するようにはできないでしょうか、ということなんです。
(現状では、サーバ上のエンコーディング指定で決め打ちしている
ように見え、結果的にSJISになってしまうと思います)

"変換をかける"と書いたのは、
アプリケーション的な理由で右づめにして先頭スペース埋めをしたい
などというフォーマット処理のことを指しています。
そういったフォーマットをする際にはデフォルトエンコーディングを
利用することが大半なので(楽ですから)、
RDBから読み込んだ時点でデータのエンコーディングが
デフォルトになっていてくれればありがたい、
ということが言いたかったんです。

>SJIS<->MS932のエンコーディングの微妙な違いは確かに随所で問題になっていま
>すが、扱うエンコーディングがどちらかに決定していれば問題はないはずです。

これもおっしゃる通りです。
プラットフォームのデフォルトエンコーディングに
決定していて欲しい、ということなんです。

JVMが動作している環境のデフォルトエンコーディングは
System.getProperty("file.encoding");
と書けば取得出来ますよね。
これに加えてRDBに格納されているデータのエンコーディングが取れれば
間違いなくそのプラットフォームのデフォルトエンコーディングに
デコード出来るのではないかな、と思ったんですが...

レポートはUSにということなので時間を見つけて
リクエストしてみます。
(この辺のコーディングは事情に詳しい日本人がやった方が
いいとも思うので、そのうちトライしてみます)
------------------------------------
      田中 良浩(TANAKA Yoshihiro) / 日本インターシステムズ(株)
      E-mail:tanakay @ nisz.co.jp  -------------------------------





pgsql-jp メーリングリストの案内