- PR -

エラーメッセージの文字化け

投稿者投稿内容
hirom
常連さん
会議室デビュー日: 2005/08/17
投稿数: 22
投稿日時: 2005-09-14 14:39
今回もお世話になります。
・windows2000
・j2sdk-1_4_2_07
・jakarta-tomcat-5.5.11
で開発しています。

Tomcat4.1では問題なく動作していたのですが、
Tomcat5.5にバージョンアップしたところ
Servletの部分でエラーが発生するようになったのですが、
エラーメッセージが文字化けしています。

type ??????

?????

?? The server encountered an internal error () that prevented it from fulfilling this request.

??

javax.servlet.ServletException: ????????????????????
RequestServKensaku.doPost(RequestServKensaku.java:110)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
RequestServKensaku.doPost(RequestServKensaku.java:110)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

                ・
                ・
                ・

Servletのコードには
"response.setContentType("text/html; charset=Shift_JIS");"

"request.setCharacterEncoding("Shift_JIS");"
と書いているのですが・・・
他に何か設定が必要なのでしょうか・・・?

申し訳ありませんが、どなたかご教授のほどよろしくお願いいたします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-09-14 15:13
Shift-JIS の文字コードセット範囲外の文字コードを扱ってますか?
hirom
常連さん
会議室デビュー日: 2005/08/17
投稿数: 22
投稿日時: 2005-09-14 15:21
コブラ様 お返事ありがとうございます。

>Shift-JIS の文字コードセット範囲外の文字コードを扱ってますか?
というのはServletのコード内でしょうか?

また文字コードセット範囲外の文字コードというのは"@" や "(株)"といったものということでしょうか?
でしたら使用しておりません。

お手数をおかけいたしますが、ご教授のほどよろしくお願いいたします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-09-14 23:22
Shift-JIS コードで文字「化」のマルチバイトは

0x89 0xBB

一方、Unix 系や Open系RDBMS で多用される基本文字コードは EUC.
その EUC 体系での「化」は16進で

0xB2 0xBD

HTML で Charset 指定の場合、この16進がオリジナル文字コードセットの範疇外
であれば、Java 経由の出力なら '?' に自動変換されてまう。
hirom
常連さん
会議室デビュー日: 2005/08/17
投稿数: 22
投稿日時: 2005-09-15 08:25
コブラ様 お返事ありがとうございます。

>HTML で Charset 指定の場合、この16進がオリジナル文字コードセットの範疇外
であれば、Java 経由の出力なら '?' に自動変換されてまう。

とありますが、私は問題解決のために何をすればよろしいのでしょうか?

・HTMLでのCharaset以外の方法を考える
・16進のオリジナル文字コードセットの範疇外?についてしらべJAVA経由であるかをつきとめる

といったことをしたらよろしいのでしょうか?

的外れなことを聞いてしまっている気になっていますが、
よろしくお願いいたします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-09-15 10:07
 <META HTTP-EQUIV の Charset 指定では、php.ini でのパラメータとかDBのオリジナル文字コードとの兼ね合いで、ちゃんとオリジナルに合わせて変換してくれない場合もありますが、それはもう、ブラウザが稼動してるOSの文字コードと引っ張りたいデータを格納しとるDBの文字コード或いは Java の標準 Unicode を実際に一致させるしかないっすね。

Tomcat は詳しくないのですが、マルチバイトに関しては、やはり Unicode が採用されとるんですかね? そうすると Unicode -> Shift_JIS に変換する過程で、 Shift_JIS に存在しない領域へのマッピングが行われ、 ? になってしもたのかも知れません。

 後、PHPでは、OS標準とは異なる、リモートマシンで作成したソースを ftp でサーバーに
アップした結果、他文字コード体系の漢字のコメントが予期せぬ制御コードと化してしまい、
Parse 解析に悪影響を与えた、なんちゅぅ事もありましたが・・・
ももんが
会議室デビュー日: 2005/02/02
投稿数: 4
投稿日時: 2005-09-15 10:22
はじめまして。

引用:

hiromさんの書き込み (2005-09-14 14:39) より:
今回もお世話になります。
・windows2000
・j2sdk-1_4_2_07
・jakarta-tomcat-5.5.11
で開発しています。



TOMCAT5.5系はJ2SE5.0用のバージョンだったと記憶しています。
J2SEが1.4系ならばTOMCAT5.0系を使用されて、もう一度確認したほうがよろしいかと。
hirom
常連さん
会議室デビュー日: 2005/08/17
投稿数: 22
投稿日時: 2005-09-15 11:26
コブラ様、yoshi様 お返事ありがとうございます。

web.xmlの中身をいろいろ触っていたら何とか表示できるようになりました。
まだエラーはありますが・・・

Tomcat5.5.11を使用する際に気をつければならないことなどご存知でしたら
教えてください。(web.xmlでのServlet宣言方法など)
よろしくお願いいたします。

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