こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Javaでの機種依存文字とWAVE DASH他の文字化け回避

Javaを使用して開発を行っていますが、

Oracle 9i DB(文字コードEUC) <=> JDBC <=> JSP

の流れの中で文字化けが発生しています。

JSPでの charset=Windows-31J 、ファイルを読み込むときの
エンコーディングもWindows-31Jにしています。

具体的に文字化けするのは、

(1)(1)(○の中に数字)
I(ローマ数字)のような機種依存文字
(2)~(WAVE DASH)
∥(DOUBLE VERTICAL LINE)など

です。

上記環境で文字化けを完全回避するに当たってですが、

(a)(1)に関しては、Oracleの文字コードをEUCではなくUTF-8にしないと
だめでしょうか?EUCでは回避は無理でしょうか?
JA16SJISTILDEでも大丈夫でしょうか?

(b)どうすれば防げるでしょうか?
  Oracleの文字コードをJA16SJISTILDEにすれば大丈夫でしょうか?

(c)他に文字化けに関して良い回避策・注意点があれば教えてください。

投稿日時 - 2006-10-11 17:33:35

QNo.2465813

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

(1)ですが、Java側で正常にUnicode<=>EUC変換できる文字であれば大丈夫でしょう。
どの文字ができてどの文字ができないかは実際に実験して確かめてみた方が良いと思います。

投稿日時 - 2006-10-12 13:29:05

ANo.1

これは、Java内部のUnicodeマッピングとOracle(JDBC)上でのUnicodeマッピングが違うという、あんまりな理由で起こります。
以下のURLに概要が書かれています。
http://otndnld.oracle.co.jp/tech/java/htdocs/javanls/javanls817.html
http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-697019&bbsid=1&no=6890&view=8

回避策としては、
・文字化けする可能性がある機種依存文字を使用させない
・DB(JDBCドライバ)に文字コード変換をさせない
(データ書き込みはJava側でコード変換してから、読み込みはバイト配列で取得してからJava側でコード変換)

などが考えられると思います。

投稿日時 - 2006-10-12 10:20:49

補足

bgbgさんご回答ありがとうございます。

・DB(JDBCドライバ)に文字コード変換をさせない
で回避できるのは
(2)~(WAVE DASH) ∥(DOUBLE VERTICAL LINE)など

(1)(1)(○の中に数字) I(ローマ数字)のような機種依存文字
は回避できないということであっていますか?

Oracleの文字コードがEUCでなくても(1)は解決できないのでしょうか?

投稿日時 - 2006-10-12 12:20:53

あなたにオススメの質問