趣味のプログラム工房

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日