- - PR -
文字コード変換に関して
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-31 14:14
「環境」
WEBサーバ:soralis(EUC_JP) DBサーバ:soralis(Shift_JIS) DB:oracle9i JDBCドライバ:タイプ2 DBより日本語文言を取得し、JSPで画面表示するという単純な処理を作成しています。 ところが画面に出力すると日本語の部分は??になってしまい、文字化けしています。 1.JSPにはヘッダー部に以下を記述しています。 <%@ page contentType="text/html; charset=Shift_JIS" %> 2.EclipseでDBから取得した日本語文字列をコンソールに出力した場合は正しく出力される。 3.DBから取得した文字列を16進数ダンプを出力してみましたが、文字化けはしていません。 4.DBから取得した文字列をShift_JISからEUC_JPに変換してみましたが状況は変わりませんでした。 ちなみに以下のコードで文字コード変換してますが、そもそもこれは正しいのでしょうか。 機種依存文字などは入力できないことが前提です。 →xxxSet(new String(data.getBytes("Shift_JIS"), "EUC_JP")); 文字コード変換部分と文字化け対処法を教えてください。 | ||||||||
|
投稿日時: 2005-05-31 15:04
文字化け関係に関しては、まず、どこで化けているのかを正確に把握するのが大事です。一般的には、普通に中身を見てみて(oracleならsql*plusでselectしてみるとか、javaなら単純にデバッグプリントしてみるとか)、普通に表示されたらそこまでは大丈夫ということです。
今回は……
とのことですから、
という状況であると思われます。 そうすると、今回のケースではDBは一切関係無くて、ただ単純に、JSPを使って正しく日本語ページ生成を行わせることが出来るか……というお話だと思われます。 具体的にどうするかですが。多分、文字コード変換系のコードを一切排除すれば、ちゃんと表示されるようになると思います。 [ メッセージ編集済み 編集者: 永井和彦 編集日時 2005-05-31 15:15 ] | ||||||||
|
投稿日時: 2005-05-31 17:26
Java内部の文字コードはUnicodeですよ?
#入出力にはUTFを使いますが EUCに変換する理由はないと思います。 文字コード変換がわからなければ とりあえず、いろいろ変換してSystemOutで見てみること。 これで大抵解決します。 JSP側ではShift_JISで読もうとしているのに EUCの文字列が入ってきているために読めなくなってしまっているかと。 実際にどこの部分で化けているか、 どの文字コードとどの文字コードの変換がうまくいっていないか を考えて実験してみると自分の力になってよいと思いますよ。 | ||||||||
|
投稿日時: 2005-05-31 23:03
これは確実に「間違っています」。 DB接続パラメータ等を適切に設定して、 yyy.xxxSet(data); とするようにしましょう。 String#getByte(String) と new String(byte[]) は よほどのことが無い限り使ってはいけません。 |
1