- - PR -
JDBC文字化け
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-06-27 10:50
つよりと申します。
以下の環境で開発を行っており、文字化けで悩んでいます。 JDKバージョン:jdk1.4.0_01-B03 データベースサーバ:RedHat7.2 informix Dynamic Setver 9.21.UC4 JDBCドライバ:JDBC Informix JDBC バージョン2.21 クライアントOS:Windows2000 文字ばけの内容としては 第3水準の漢字(IBM拡張文字)で「立ち崎」や「はしご高」が「?」になってしまいます。 ちょうど、WEB+DBに該当記事が出ていたのですが、解決にはいたりませんでした。 サーバはSJISで構成されています。 JDBCのURL内で「NEWLOCALE=ja_JP,ja_JP;NEWCODESET=SJIS,sjis-s,932」文字コードの指定を行っています。 この環境でgetString()により値を取得すると、「立ち崎」はunicodeの場合、fa11のはずなのですが、「fffd」で取得されており、表示上は「?」になっていました。 http://www02.so-net.ne.jp/~kikuta/jdbcnote/jdbc6_1.html こちらのサイトを参考にさせていただいて、 String( value.getBytes( "8859_1" ), "SJIS" ) で、変換を行おうとしたのですが、ほかの文字まで文字化けしてしまいました。 informixの場合、URLの設定にも問題があるとは思うのですが、なにかご存知のことがありましたら、よろしくお願いします。 |
|
投稿日時: 2002-06-27 22:12
記事の書き方悪かったかな…
MS-CP932 の立ち崎、はしご高は第3水準(JIS X 0213)じゃありませんよ。 # JIS X 0213 は Windows では扱えませんし、扱うつもりもないようです。 # 同じ文字が扱えるようになったとしても、それはあくまで Unicode の一部として、です。 記事にも書きましたが、各コンポーネントでの「シフトJIS」がなんであるか確認してください。 String( value.getBytes( "8859_1" ), "SJIS" ) では機種依存文字は扱えません。 SJIS ではなく MS932 や Windows-31J を使ってください。 「NEWCODESET=SJIS,sjis-s,932」だと JDK encoding が SJIS ですから、当然、機種依存文字は使えません。sjis-s,932 がどうかは私にはわかりません(Informix 知らないんで)。が、見た感じではだいじょうぶそうに見えはしますね。 「NEWCODESET=MS932,sjis-s,932」なんじゃないですか? [ メッセージ編集済み 編集者: しょむ 編集日時 2002-06-27 22:20 ] |
|
投稿日時: 2002-06-28 19:24
>MS-CP932 の立ち崎、はしご高は第3水準(JIS X 0213)じゃありませんよ。
># JIS X 0213 は Windows では扱えませんし、扱うつもりもないようです。 ># 同じ文字が扱えるようになったとしても、それはあくまで Unicode の一部として、です。 第3水準と書いたのは、IME-2000の文字一覧のカテゴリが「漢字3」になっていたので、そういう表現を使ってしまいました。まぎらわしい表現で申し訳ありません。 >「NEWCODESET=MS932,sjis-s,932」なんじゃないですか? はい、その通りでした。 imformixのドキュメントには、「MS932」については、対応しているように書かれていなかったのですが、大丈夫でした。 ありがとうございました。 もう一度、記事を読み直して見ます。 |
1
