restofwaterimpのぎじゅつMemo

SIerに所属。企画から運用まで幅広くやってます。C#中心に書いてます。

文字コードについて

昨日は一日文字コードに悩んでいた。

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属性

 

 

f:id:restofwaterimp:20130207054700j:plain

 

 

contentTypeとpageEncodingの違い

 

 

       Java仮想マシン内部はすべてUnicode

   Unicode → ブラウザでの文字コード指定の変換が必要

 

特殊文字が化ける

 解決策Shift_JISの代わりにWIndows-31Jを指定する

title02.jpg

f:id:restofwaterimp:20130207054706j:plain

 

今回はWIndows-31Jを指定すれば、ひとまず解決できそうなことがわかった。

http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html

副作用というか、DBへ入力時の特殊文字が文字化けしないかが気になるが、

やりながら確認するものとする。

 

IBMホストの中の世界だけでやってきたから文字コードでやんやすることは

あまりなかったが、複数サーバは環境が異なるものを使うと、色々と起こるんだなと・・。