| Home |
2006.08.27
Mavenトラブル事例-TomcatプラグインでJSPが文字化け
続々々Mavenトラブル事例。
Tomcatプラグイン1.2.1で、日本語を含むJSPをプリコンパイルすると、
hoge_jsp.java:10: 警告: この文字は、エンコーディング MS932 にマップできません。
のような警告がでます。
そのままビルドはできますが、Tomcatにデプロイしてアクセスすると
日本語が文字化けしてしまいます。
原因は、JSPプリコンパイル時の文字コードが、UTF-8固定になっていることにあります。
JSPをプリコンパイルするTomcatのプリコンパイラ(org.apache.jasper.JspC)では、
生成するServletのソースコードのデフォルト文字コードがUTF-8になっています。
Windowsで開発している場合はソースコードはMS932で書くことが多く、
コンパイル時もMS932を指定するので、ここで文字化けが起こってしまうのです。
対応としては、TomcatプラグインのJellyスクリプトを改造するしかありません。
(Tomcatプラグインには、プリコンパイル時の文字コードを指定するプロパティ
は用意されていないようです)
Tomcatプラグインのplugin.jellyに、_jspcと言うゴールがあり、
その中でjasper2タスクが実行されるようになっています。
jasper2タスクには、javaEncodingプロパティが用意されているので、
これを使って文字コードを指定するようにすればOKです。
<jasper2 validateXml="false"
uriroot="${maven.war.webapp.dir}"
webXmlFragment="${maven.build.dir}/tomcat/src/WEB-INF/generated_web.xml"
addWebXmlMappings="true"
outputDir="${maven.build.dir}/tomcat/src/java"
javaEncoding="MS932"/>
Tomcatプラグイン1.2.1で、日本語を含むJSPをプリコンパイルすると、
hoge_jsp.java:10: 警告: この文字は、エンコーディング MS932 にマップできません。
のような警告がでます。
そのままビルドはできますが、Tomcatにデプロイしてアクセスすると
日本語が文字化けしてしまいます。
原因は、JSPプリコンパイル時の文字コードが、UTF-8固定になっていることにあります。
JSPをプリコンパイルするTomcatのプリコンパイラ(org.apache.jasper.JspC)では、
生成するServletのソースコードのデフォルト文字コードがUTF-8になっています。
Windowsで開発している場合はソースコードはMS932で書くことが多く、
コンパイル時もMS932を指定するので、ここで文字化けが起こってしまうのです。
対応としては、TomcatプラグインのJellyスクリプトを改造するしかありません。
(Tomcatプラグインには、プリコンパイル時の文字コードを指定するプロパティ
は用意されていないようです)
Tomcatプラグインのplugin.jellyに、_jspcと言うゴールがあり、
その中でjasper2タスクが実行されるようになっています。
jasper2タスクには、javaEncodingプロパティが用意されているので、
これを使って文字コードを指定するようにすればOKです。
<jasper2 validateXml="false"
uriroot="${maven.war.webapp.dir}"
webXmlFragment="${maven.build.dir}/tomcat/src/WEB-INF/generated_web.xml"
addWebXmlMappings="true"
outputDir="${maven.build.dir}/tomcat/src/java"
javaEncoding="MS932"/>
crossroad
> javaEcoding="MS932"の部分ですが、javaEncodingの綴り誤りのようですよ。
あうち。
ご指摘ありがとうございます。修正しておきました。
あうち。
ご指摘ありがとうございます。修正しておきました。
2007/10/06 Sat 15:39 URL [ Edit ]
jun
この記事があったおかげで、文字化けが解決することができましたわ〜
さんくすですー。
javaEcoding="MS932"の部分ですが、javaEncodingの綴り誤りのようですよ。
さんくすですー。
javaEcoding="MS932"の部分ですが、javaEncodingの綴り誤りのようですよ。
2007/10/06 Sat 14:08 URL [ Edit ]
| Home |


