- - PR -
JSPの文字化け
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-19 13:19
JSPの中で、「表」という漢字を処理に入れると
Tomcatのエラーが出てしまいます。 対策がありましたらご教授いただきたく、よろしくお願いいたします。 -------- JSPの内容 -------- <% String test = new String(); test = "表"; %> -------- エラー内容 -------- org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: ***.jsp の中の行: **でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\***_jsp.java:**: 文字列リテラルが閉じられていません。 test = "ツ表"; -------- WEBサーバ環境 -------- Apache :2.0.47 Tomcat :4.1.29 OS : WindowsXP | ||||
|
投稿日時: 2004-08-19 13:46
ろっぷすと申します。
文字化けの件ですが、JSPのファイルのエンコーディングと tomcatのJSPファイルのエンコーディング(defaultはUTF-8かな?)が あっていないのではないでしょうか?。 tomcatのJSPファイルのエンコーディングは%TOMCAT_HOME%\conf\web.xmlの下記の行にあります。 //--- 抜粋 <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>logVerbosityLevel</param-name> <param-value>WARNING</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> ---// 何も指定していなければdefaultのエンコーディングが使用されます。 | ||||
|
投稿日時: 2004-08-19 14:28
ご回答ありがとうございます。
web.xml を以下のように設定し、Tomcatを再起動しました。 結果は同じく、Tomcatのエラーが出ました。 -------- web.xml -------- <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 〜略〜 <init-param> <param-name>javaEncoding</param-name> <param-value>Shift_JIS</param-value> </init-param> 〜略〜 </servlet> -------- JSPのエンコーディング -------- <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> -------- エラー内容 -------- org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: ***.jsp の中の行: **でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\***_jsp.java:**: 文字列リテラルが閉じられていません。 test = "?\"; 文字の化け方が変わりましたが、、 | ||||
|
投稿日時: 2004-08-19 14:47
XXXの部分にファイルのエンコーディングを設定しても文字化けしますか? | ||||
|
投稿日時: 2004-08-19 15:18
charset の指定はしていましたが、変えてみました。
<%@ page contentType="text/html; charset=8859_1"%> ↓ <%@ page contentType="text/html;charset=Shift_JIS" %> と変えてみたところ、「表」という漢字は出るようになりました。 ですが、今度はJavaで出力した文字列が化けるようになりました。 これは、Javaから出力した文字列の文字コードを変換する処理を入れれば 回避できそうな気はします。 あるページで見つけたのですが(URLは載せていいのかわからないので割愛します) Shift_JISコードで「表」は「95 5C」で、2バイト目が「5C」というコード であり、Shift_JISで「5C = \」であるせいで、文字化けしてしまうとか。 1.「表」→「95 5C」である。 2.「5C = \」はエスケープが必要な文字と判断し、エスケープのため 自動的にもうひとつ「\」を入れてしまう。 3.結果、「表」→「95 5C 5C」→「表\」と表示される。 さらに調べたところ、回避策としては、コーディング時に「表\」として おくとよいそうです。 今回、上記の回避策をとることにしました。 アドバイスありがとうございました。 後学のためもう少し調べてみて、何かわかったらまた書き込みをしたいと思います。 | ||||
|
投稿日時: 2004-08-19 15:38
こんにちは。
ご存知だとは思いますが、この問題が発生する文字は「表」だけではありません。 http://www.atmarkit.co.jp/fjava/rensai2/eclipse03/eclipse03.html この記事の「コラム:TomcatのJSP文字コードの扱い」を参考に根本的な解決を行うことをおすすめします。 | ||||
|
投稿日時: 2004-08-19 16:44
大変勉強になりました。慎重に検討いたします。
| ||||
1
