正直言ってUTF-8を使わない人を見下している
UTF-8を使わない人って、ツマラナイ人間が多いです。正直見下しています。
考えが古臭い最新知識が少ない、「〜だ」と断定するのがクセ、それなのに話の裏付けがない。
こんなヤツと一緒に働きたくなんかありません。その上、コードを書かせても全くダメ。掲示板もまともに書けない。
・・・とネタはここまでにして(正直言って本を読まない人を見下している)
最近5〜10年くらい前のシステムを新サーバへ移行しなければいけないということがありまして、その際にちょいと苦労したのでメモっておきます。
ここ最近のものは基本的に文字コード"UTF-8"で作られていて、多分他社様でも"UTF-8"を使用している所が主流なのではないでしょうか?
ただ今回の移設対象のシステム群は基本的にソース類もデータも"EUC-JP"でした。
移行に伴いDBクライアントとして使用してたphpMyadminもバージョンアップ
→こいつが曲者でバージョン3.5以上(調べてないので定かではない)だと内部的なエンコードがUTF-8になってしまうことが判明
データベースを使用しなければhtmlのcharsetとphpのソース内でmb_internal_encodingを使用して対象文字コードを指定すればOKですが、DB保持データもEUCのためselectした結果が?????で表示され文字化けしてしまいました。
いろいろ試した結果DB接続時にcharsetしてあげるのが一番改修が少なくスムーズにいけました。
$db = mysql_connect("server_name","user_name","password"); mysql_select_db("database_name",$db); mysql_set_charset("ujis",$db); //EUC-JPはujis
これで文字化けせずに"EUC-JP"で文字をI/Oできました。
注意としてはphpMyadminで保存データを見るとEUC-JPで保存されているデータも(表示上は)UTF-8に変換されているので、髙(はしごだか)や~(チルダ)などは文字化けしてしまいます。
その際の対応としてwindowsのみを想定したものになってしましまいますが
//省略 mysql_set_charset("eucjpms",$db); //widows用?
とすることで問題無さそうでした。