WEB アプリケーションサーバ 文字化け発生問題
WindowsサーバにおいてColdfusion(アプリケーションサーバ)とIIS(WEBサーバ)の組み合わせに文字コードSJISでWEBサイトを作っているのですが、、、文字化けが発生。今回のミソはWindowsで動かしているということで、
WindowsのSJISはSJISであってSJISでない。
正確にはWindows-31Jという文字コードなのです。
そのため、特に内部エンコードにUnicodeを使用しているようなJava系のWEBサーバ・アプリケーションサーバにおいては文字化けが発生するようです。
ソース(SJIS正しくはWindows-31J)→アプリケーションサーバ(Unicode:普通のSJISとして解釈し文字化けが①)→HTML(SJIS)→ブラウザ(Windows-31Jで解釈するため文字化け②)
という現象が起こるみたいなんですよね。
要するに2箇所で文字化けが起こっちゃってるんです。
まず、①を回避するため、Coldfusionでは内部エンコードを指定します。
<cfprocessingdirective pageencoding="Windows-31J">
次に②を回避するために、出力する文字コードを指定します。
<cfcontent type="text/html; charset=Windows-31J">
CFでWindows-31Jを指定するなんてマニュアルに無いんですよね、、、
あとは、HTMLのメタタグの部分は、SJISでもWindows-31Jでもどちらでもいいです。(クライアントがWindowsであれば、どちらにしてもWindows-31Jで解釈する)
2011年09月07日