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

#現象

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

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

#環境

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

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

#解決方法

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

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

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