- PR -

servletでResuitSetのgetString( )は日本語が文字化け でもjspではOKなぜ?

1
投稿者投稿内容
しげ
会議室デビュー日: 2004/03/05
投稿数: 1
投稿日時: 2004-03-05 19:09
はじめまして java新人です
servletとjspでの日本語の処理でまいってます

環境
j2sdk 1.3.1
oracle9i(jdbc:thinドライバ)
tomcat 4.1

上の環境でjdbcを使用してoracleのデータ(日本語)を表示する
テストをしていましたが、servletからResuitSetのgetString( )で表示すると
日本語が文字化けします。
同様のコードでjspから実行すると問題なく日本語を表示できるのですが
この2つの実行環境の違いは何でしょうか?
またservletで正しく日本語の表示をするためには何が必要でしょうか?

どなたかご教授頂けないでしょうか。 よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-05 19:17
JSP から生成される Servlet のソースコードと自分のサーブレットのコードを見比べてみてはいかがでしょうか?
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2004-03-05 20:59
[quote]
しげさんの書き込み (2004-03-05 19:09) より:
テストをしていましたが、servletからResuitSetのgetString( )で表示すると
日本語が文字化けします。
[/quote]
私も似たような環境(JRE1.1.8ですが)で開発をしていたものです。
基本的に getString() で得られる値は、1byte区切り文字列となってしまい2byte(日本語)文字が正常に表示されないと思っていたのですが、JSPは違うのでしょうか?
JSPを使用した経験がないので興味が引かれるところです。

参考まで・・・
私はgetString()で得た文字列をbyte化し、再度MS932などで文字列として再構成していたと思います。
ダメ猫
常連さん
会議室デビュー日: 2004/02/20
投稿数: 45
投稿日時: 2004-03-08 18:54
こんにちはダメ猫です。

確か、JAVAの文字コードがUnicodeの問題だったと思います。
oracleの文字コードを何にしているかで変わってきますが、そちらを考慮してみると良いと思います。

ResuitSetのgetString()では無くgetObject().toString()で取り出すと上手くいくと思います。
getObject()には何番目のデータかの引数は必要ですが・・・

ダメ猫の戯言なので間違っているかもしれませんが、これでいけたような気がします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-03-09 13:40
コードが書かれていないのでなんとも言えませんが、Servletで出力するときにレスポンスの
文字エンコーディングを指定していないのではないでしょうか?
1

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