- PR -

iplanet6.0 + Solaris で文字化けの問題

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/06/08
投稿数: 4
投稿日時: 2004-06-08 13:05
よく出る問題かもしれませんが、質問させて頂きます。

表記通りの環境でJSPのcharset=Shift_JISに設定してから、フォームに入力した日本語を次のページで表示しようとするときに文字化けます。
表示画面では
--------------
String name = (String)request.getParameter("NAME");
byte[] b = name.getBytes("ISO-8859-1");
String name_show = new String(b ,"SJIS");
-----
のような処理をしてからname_showを表示しても文字化けます。

ちなみに、同じファイルをiplanet6.0+windows2000の環境で実行してみると日本語が正常に
表示されます。

ご存じであれば、ぜひご教授おねがいします。

_________________
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-06-08 13:22
引用:

--------------
String name = (String)request.getParameter("NAME");
byte[] b = name.getBytes("ISO-8859-1");
String name_show = new String(b ,"SJIS");
-----
のような処理をしてからname_showを表示しても文字化けます。



文字化けというよりも、この時点では Shift_JISの文字列が
復元できているのではないでしょうか?

さらに EUC-JPに変換すれば、通常の処理ができるように
なるとかということでは?
未記入
会議室デビュー日: 2004/06/08
投稿数: 4
投稿日時: 2004-06-08 16:48
ご返信ありがとうございます。

引用-----------------------------------------
文字化けというよりも、この時点では Shift_JISの文字列が
復元できているのではないでしょうか?
--------------------------------------------

確かに復元されるはずなんですけど、そのまま表示してみると、文字化けになります。

また、次の表示画面で文字コード変換とかしなくて通常の処理をするとうまくいけないです。
たとえば、入力した文字でDB検索をしても結果が出ないです。しかし、直接SQL文を発行して同じ文字をキーで検索すると結果がでます。

たぶん入力画面で入力した文字が文字化けになったからDB検索結果がでないと思っております。

Windowsサーバーでは正常なので、Solarisに関係あると思いますけど、まだ解決策がないです。

Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-06-09 00:49
[quota]
確かに復元されるはずなんですけど、そのまま表示してみると、文字化けになります。
[/quota]

だから、Shift_JISが復元できても、EUC環境でそのまま表示したら
化けるでしょう。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-06-09 07:36
なんかよくわかんないけど、事象だけ読むと入力パラメータに対してiplanetがOSのデフォルトエンコーディングを適用しているように思えますね。
getParameter()する前にHttpServletRequest#setCharacterEncoding()でShift_JISを指定したらどうでしょうかね。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2004-06-09 10:19
引用:

getParameter()する前にHttpServletRequest#setCharacterEncoding()でShift_JISを指定したらどうでしょうかね。


iPlanet 6.0 って Servlet API 2.2準拠だったと思うので
HttpServletRequest#setCharacterEncoding()
は使えないでしょう。たぶん。
未記入
会議室デビュー日: 2004/06/08
投稿数: 4
投稿日時: 2004-06-09 10:27
-------------
事象だけ読むと入力パラメータに対してiplanetがOSのデフォルトエンコーディングを適用しているように思えますね。
getParameter()する前にHttpServletRequest#setCharacterEncoding()でShift_JISを指定したらどうでしょうかね。
-------------
確かにご指摘どおりOSのデフォルトエンコーディングが適用されたのが原因です。
おかげさまで問題は解決しました。


Anthyhimeさん、Kissingerさんいろいろ教えていただいてどうもありがとうございました。
1

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