Struts2 文字化け回避
Struts2ではdefaultのエンコーディングがUTF-8となっているので、一見問題なく日本語を使えそうだが、JSPからGETで日本語を渡すと文字化けしたりする。その原因はTomcaのURLエンコーディングの設定。
http://struts.apache.org/2.x/docs/how-to-support-utf-8-uriencoding-with-tomcat.html
にしたがって、Tomcatのserver.xmlに
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
という感じでURLのエンコーディングをUTF-8に指定してやれば日本語を渡しても文字化けせずにActionで受け取ることができた。
ところが、
http://nullpo.2log.net/home/struts2/archives/blog/main/2007/05/15_011953.html
に、POSTの場合はフィルタを余計に噛ませる必要がある旨の記述あり。
実験して検証すべきだろうな。
それにしても、code snippetが登場する話題が少なすぎて、はてなでコーディングハイライトする方法を毎回忘れてしまう・・・。