- PR -

「〜」文字化けについて(JDBC Thinドライバ)

投稿者投稿内容
ゆん
常連さん
会議室デビュー日: 2003/07/11
投稿数: 32
投稿日時: 2003-07-11 11:34
Windows2000,Tomcat,Oracle9i,JDBCThinドライバ,Servlet,JSP,JDK1.4,Struts1.0
の環境でアプリケーション構築しています。

@鰍ネどの文字化けは解決したのですが〜が解決しません。
この問題はネットでもよく見かけるのですが、具体的対応方法がわかりません。
どなたかご教授ください。または参考になるページを教えてください。
どうぞよろしくお願いします。
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-07-11 11:41
私も知りたかったので便乗してしまいます。

自分の場合はJDBCではなくFileWriterクラスを使ってファイル書き出しした
時、同じ現象に遭遇しました。
結局、OSをWin2KからRedHatLinux 8 にせざるを得ませんでした。

# 補足
# 環境:Win2K SP3 + jdk1.4.1_03 + Tomcat 4.1.24 です。
# その時はJSPを組んでいる時で、エンコーディングはsjisで受けて、
# ISO8859_1で処理したものでした。


[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-07-11 11:55 ]
CAN
会議室デビュー日: 2003/07/11
投稿数: 4
投稿日時: 2003-07-11 11:53
Strutsを試している程度の初心者なのですが、

私は、JSPに下記の設定をすると 〜 が表示できています。

<%@page contentType="text/html; charset=MS932" %>
<%@page pageEncoding="MS932" %>

これでいいのかな?
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-07-11 12:00
CAN様>

FileWriterクラスでの問題はこれで解決しました。
ありがとうございました。

# 訂正です。
# ご指示いただいた方法で一瞬直ったと思いましたが、改めて確認しましたら
# 記録されたものは、やはり「〜」が「?」になっていました。
# 直接文字変換したものをout.printlnしてみると〜がちゃんと表示されているのに。
# 何故でしょう。

# 現象が似ていても原因が異質であると判断したため、新スレッドをたてて
# 質問いたします。どうもすみませんでした。

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-07-11 17:48 ]
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-07-11 12:04
引用:

ゆんさんの書き込み (2003-07-11 11:34) より:
Windows2000,Tomcat,Oracle9i,JDBCThinドライバ,Servlet,JSP,JDK1.4,Struts1.0
の環境でアプリケーション構築しています。

@鰍ネどの文字化けは解決したのですが〜が解決しません。
この問題はネットでもよく見かけるのですが、具体的対応方法がわかりません。
どなたかご教授ください。または参考になるページを教えてください。
どうぞよろしくお願いします。


 下記を読んでみてください。
http://www.vc-net.ne.jp/~ytp/bbs/java/bbs3427.html

対応策が解かるかと思います。

引用:

Strutsを試している程度の初心者なのですが、

私は、JSPに下記の設定をすると 〜 が表示できています。

<%@page contentType="text/html; charset=MS932" %>
<%@page pageEncoding="MS932" %>

これでいいのかな?


 ゆんさんの文字化けの問題は、
オラクルとWindowsの文字コードのマッピングの違いから生じているものです。
したがって、上記のようにしても”〜”は文字化けします。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2003-07-11 12:29
Windows-31Jという書き方もありますよ。MS932よりも親しみやすい気がするので、私はこっちを使ってます。
ゆん
常連さん
会議室デビュー日: 2003/07/11
投稿数: 32
投稿日時: 2003-07-11 14:35
takuさん、ありがとうございます。この方法でやってみました。
DASHかチェックして文字変換しました。
ところがやっぱり化けてしまいます。
HTMLからstr.getBytes("ISO-8859-1"),"MS932")した直後はSystem.printlnすると「〜」
と表示されます。これを文字変換かけた直後は「?」となります。
JDBCでライトするとやはり「?」となります。変換する文字コードが悪いのですよね。
0x301cではないのでしょうか・・・・?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-07-11 15:29
引用:

ゆんさんの書き込み (2003-07-11 14:35) より:
takuさん、ありがとうございます。この方法でやってみました。
DASHかチェックして文字変換しました。
ところがやっぱり化けてしまいます。
HTMLからstr.getBytes("ISO-8859-1"),"MS932")した直後はSystem.printlnすると「〜」
と表示されます。これを文字変換かけた直後は「?」となります。
JDBCでライトするとやはり「?」となります。変換する文字コードが悪いのですよね。
0x301cではないのでしょうか・・・・?


 ”〜”の文字化けはDBに書くときに文字化けを起こすのではありません。
(ライト時に文字化けしていれば復元は難しいかとおもいます。)
これはDBから取得したときに、文字化けを起こします。
(Windowsとオラクルの文字コードマッピングが異なるため)
したがって、上記のサイトにあるようなクラスを作成することによって、
正しい値が取得できます。
尚、この問題に関してはオラクルのサイトにも記述があります。

 ちなみに、私も以前同様の症状に陥ったことがありましたが、
上記のサイトの情報から無事解決することができました。

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