[Java] Servletとの非同期通信(Ajax)で文字化けした時の対処方法

現象

?に文字化けした。 (株)

「ホゲホゲ㈱」⇒「ホゲホゲ?」

環境

  • 文字コードがShift-JIS
  • 発生は、IE のみ

ちなみに文字コードがUTF-8であれば問題なかった。

解決方法

現象としては、文字コードをWindows-31Jにすると、IE だけ文字化けする。
調べてみると、IE はWindows-31Jでないと駄目みたい(IE9 でもこの仕様っぽい)で、IE に対応するには文字コードの指定をcsWindows31Jしてやる必要がある。

以下のコードを Servlet に追加。

response.setContentType("text/html; charset=csWindows31J");