- PR -

"〜"の文字化けについて

投稿者投稿内容
はね
会議室デビュー日: 2003/03/20
投稿数: 11
投稿日時: 2003-03-21 01:14
こんにちは、はねと申します。

現在以下のような環境で開発を行っているのですが、DBから取得した
"〜"が"?"に化けてしまい困っています。DB自体には正しく登録さ
れている事はSQLPlusで確認しています。

【OS】Solaris(LANG=ja_JP.PCK)
【DB】Oracle8.1.7(NLS_CHARACTERSET=JA16SJIS)
【JDBC】classes12.zip(V8.1.7.0.0)
【JDK】1.3.1_02

DBと同一サーバー上でjavaのプログラムを実行しており、OCI Driver
で接続しています。
DBから取得した文字列は
 new String(s.getBytes("Shift_JIS"), "JISAutoDetect")
でエンコードしています。
文字化け対策としてよく行われているcharAtメソッドで文字コードを
確認して"0x301c"を"0xff5e"に変換する方法を試そうと思い、
ResultSet.getString()で取得したStringオブジェクトの文字コードを
charAtメソッドを使って確認したところ、"〜"に対応する文字コードが
既に"0x3f"(="?")となっていて判定することも出来ず、対処に困っています。
試しにResultSet.getBinaryStream()を使ってダンプを確認したのですが
やはり"〜"に対応するバイトが"0x3f"となっておりました。
どなたか対処方法をご存知でしたらご教授お願いします。
御爺庵
常連さん
会議室デビュー日: 2002/02/06
投稿数: 33
お住まい・勤務地: 大阪府
投稿日時: 2003-03-21 11:24
JDBCの注意書きは読まれましたか?
たしかOracleが「化けます。でも、うちが悪いわけでは無いよ」とか書いてます。
はね
会議室デビュー日: 2003/03/20
投稿数: 11
投稿日時: 2003-03-21 14:14
早々のレス有難うございます。

JDBCの注意書きというのは「JDBC 8.1.7上でのNLS環境におけるキャラクタの整合性の問題について」と「NLS環境におけるキャラクタの整合性の問題」の事でしょうか?
この資料は読んだのですが、私の抱えている問題の解答だと言う確信が持てなかった(単に読解力がないだけかな^^ので皆様にお伺いしようと思いました。

やはり私が抱えている問題はこの資料に書かれている問題なのでしょうか?
だとしたら化けてしまう文字は使わない、というのが現実的な解決策と言うことでしょうか?
yoshi
会議室デビュー日: 2003/03/22
投稿数: 1
投稿日時: 2003-03-22 12:54
多分そうだと思います。

試しに,エンコード処理で
 new String(s.getBytes("Shift_JIS"), "JISAutoDetect")
の"Shift_JIS"を"SJIS"に変えてみてはどうでしょうか?

但し,もしこれで"〜"がうまく表示できたとしても,今度は"−"など他の文字が化けてしまうと思います。
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 2003-03-22 16:29
 サーブレット側でフォームの入力データをチェックして、"〜"の
ようにうまくいかない文字があったら次画面に遷移させず、エラー
メッセージを表示するようにしておけばいいと思います。
 それに加え、入力フォームのトップページに「入力できない文字
の一覧」リンクを張って、入力できない文字の一覧表を表示するよ
うにしておけばより親切です。というか、これをやらないとダメな
文字を教えろとクライアント、エンドユーザーから質問が来ること
が予想されます。
 その場合、OSはMacの人もいるので、Macで入力できない文字も調
べる必要があります。
 またブラウザによっては、ブラウザに入力した時点で文字(主に
丸文字、単位文字など)を変換してしまうものもあります。

 プログラムで変換処理をして表面上は綺麗に動かそうなんて野心
を抱くとシステムがややこしくなり開発・試験ともに工数が増大し
ます。仕事・仕様と割り切ってドライに対応するのが吉だと思いま
すが・・・(笑)。

 他のところはどうやってるのかな?
御爺庵
常連さん
会議室デビュー日: 2002/02/06
投稿数: 33
お住まい・勤務地: 大阪府
投稿日時: 2003-03-24 10:32
こんにちわ

うちは
・化けてしまう文字は使わない
って方針でやっています。
#ユーザからは不満タラタラですが...

あと、この目で確認したわけでは無いのですが他の部署で
・DBの格納をUnicode化する
って手で逃げてるところもあるそうです。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2003-03-24 14:11
こんにちは

私自身は使用したことがないのですが、
DataDirect社
http://www.datadirect.co.jp/
が出しているJDBC周りの製品はどうでしょうか。
評価版がダウンロードできます。

確か、最近JrunのMLで同じような問題が
出ていたと思います。
http://jrun.itfrontier.co.jp/jrunml/jrunml.cfm

[ メッセージ編集済み 編集者: latte 編集日時 2003-03-24 14:18 ]
御爺庵
常連さん
会議室デビュー日: 2002/02/06
投稿数: 33
お住まい・勤務地: 大阪府
投稿日時: 2003-03-24 14:49
蛇足な補足です

DataDirect社のJDBCドライバ...高いです(笑)
が、ものは良いです。SQL Server相手には良く使用しています。

今回の問題の解決になるかどうかは不明なので、蛇足です。

スキルアップ/キャリアアップ(JOB@IT)