またまた、文字化けではまっています。

このやり方を試してみようかなぁ。

なんと。Tomcat 5では、server.xmlのConnecter定義のところに、下記赤字部分を追加すれば良いらしいです。POSTもGETもsetCharacterEncoding()一発でOKです。前に作ったフィルタは不要になりますた。

enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" />


これも、試してみようかな

/* strを8859_1の文字列としてバイト列に変換し、文字コードEUC-JPと仮定
してunicodeへ変換 */
str = new String(str.getBytes("8859_1") ,"EUC-JP");

誤認識するのはわかっていても、JISAutoDetectつかいたいなぁ。。。

JISAutoDetectの是非
setCharacterEncodingでJISAutoDetectを使えば、クライアントがどの文字コードを使用しても対応できるので、一見すばらしい解決策に思われます。しかし、JISAutoDetectには、文字コードの誤認識が常に付きまといます。特に短い文字列の場合は誤り率が高くなります。HTMLのフォームのように比較的短い文字列を扱うときは、JISAutoDetectは使用するべきではありません。

やっぱり使わないほうがいいらしい。。。

というよりも、JISAutoDetect は極力使用しないことです。
問題は2点あります。

  • 特に短い文字列では認識違いが起こる可能性がある。

 (いわゆる半角カナのフィールドに使ったりすると死亡)

 また「〜−¢£‖」などが変になる可能性がある。