文字コードについて
昨日は一日文字コードに悩んでいた。
encodingやcontent-typeの指定はしているが、
全角チルダや丸文字、株などが文字化けする。
環境は、tomcat,struts,,oracleという環境。
WASではうまくいくけど、Tomcatだと化ける。
Unicode指定にもともとなっていればいいのにと思いつつ、既存がShift_JISであった。
文字コード付近を理解できていないので、いい機会なので参考ページを元に
ちょっぴり整理する。
<追加>
http://www.ibm.com/developerworks/jp/websphere/library/was/mojibake/
WASの場合は、エンコードをどのように処理するかの記載があった。
だから、JSPのエンコードがShift_JISでも特殊文字がうまく見えていたのか・・・?
参考URL
http://www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html
Webブラウザが文字コードを判定する基準
1.HTTPにおけるContent-Typeヘッダのcharaset
2.HTML文書のMETA宣言、http-equiv属性で設定された
Content-Typeヘッダのcharset
3.HTML文書内の各要素のcharaset属性
contentTypeとpageEncodingの違い
- contentType属性:JSPファイル出力時の文字コード、およびContent-Typeヘッダに出力する文字コード名を指定する
- pageEncoding属性:JSPファイル作成時の文字コードを指定する
特殊文字が化ける
解決策Shift_JISの代わりにWIndows-31Jを指定する
今回はWIndows-31Jを指定すれば、ひとまず解決できそうなことがわかった。
http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html
副作用というか、DBへ入力時の特殊文字が文字化けしないかが気になるが、
やりながら確認するものとする。
IBMホストの中の世界だけでやってきたから文字コードでやんやすることは
あまりなかったが、複数サーバは環境が異なるものを使うと、色々と起こるんだなと・・。