またまた、文字化けではまっています。
このやり方を試してみようかなぁ。
なんと。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点あります。
- 特に短い文字列では認識違いが起こる可能性がある。
(いわゆる半角カナのフィールドに使ったりすると死亡)
また「〜−¢£‖」などが変になる可能性がある。