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

TANAKA Yoshihiro ytp @ vc-net.ne.jp
2002年 3月 12日 (火) 01:15:53 JST


田中 良浩 です。

On Mon, 11 Mar 2002 23:54:23 +0900
Tsunehisa Kazawa <kazawa @ sons.co.jp> wrote:

お返事ありがとうございます。
#もしこの話題がこのメーリングリストにそぐわないようならば、
#返信せず打ち切ってしまっていただけますか?
#皆さん大変申し訳ありません。

>EUC-JP ストリーム    → EUC-JP コンバータ = \u301c
>Shift JIS ストリーム → SJIS   コンバータ = \u301c
>Shift JIS ストリーム → MS932  コンバータ = \uff5e
>
>一番下の例でだけ生成される文字コードが変わってしまい、もしこの文字
>に依存するような処理があった場合にはポータビリティが失われてしまい
>ます。

いずれのコンバータを使った結果であっても、
外部とのIOをしないJavaのプログラム、例えば集計処理をするとか
ですが、そういうプログラムはデフォルトエンコーディングで
統一したいという意味なんです。

例えばこんな感じです
外部ファイル           IOクラス          アプリケーション(集計処理)
 シフトJIS     シフトJIS→Javaデフォルト    Javaデフォルト
 シフトJIS     シフトJIS←Javaデフォルト    Javaデフォルト

私の中では、
この外部ファイルとIOする部分はアプリケーションとは言わず、
いわばドライバのようなもの、と考えています。
このクラスは当然外部のエンコーディングを意識します。
今回で言うとJDBCもこのIOクラスに当たると考えたんです。
(自前でJDBCに一皮かぶせて、それをIOクラスとする手も
もちろんあるとは思います)

>現実にデフォルトエンコーディングが EUC-JP だったり SJIS だっ
>たり MS932 だったりする環境は存在するわけで、それらの間で同じ Java
>アプリケーションを利用したい、と考えるのであれば、デフォルトエンコー
>ディングは使えないことになります。

今回のJDBCの場合、
System.getProperty("file.encoding");
によって汎用的にデフォルトエンコーディングを取得するのは
解決策にはならないでしょうか?

>て (田中さんが示してくださったような風間さんの対応表などを元に) Java
>レベルで文字変換をかけてから SJIS コンバータで出力する方を好みます。
>将来 EUC-JP や JIS に変換しなくてはいけなくなった時、その方がきっと
>楽だからです。

加澤さんは、このような処理をアプリケーションと呼んでいらっしゃって
私はこれをドライバと呼ぶところに論点のずれがあるのでしょうか?
加澤さんが書いて下さった内容は、私が普段思っていることと
結果は同じなんですが、手段が全く逆になってるように聞こえるからです。

※今回初めてPostgreを使ってみて随分気に入りました。
  もう少し使い込んだら、またこちらで色々お世話になることも
  あると思いますので皆さんよろしくお願いいたしますm(_~_)m

★加澤さんのUnicodeでの実験結果の原因が
  早くはっきりするといいですね。
------------------------------------
      田中 良浩(TANAKA Yoshihiro) / 日本インターシステムズ(株)
      E-mail:tanakay @ nisz.co.jp  -------------------------------






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