MySQLデータベースの移設(EUC-JP→UTF-8) PHP編
前回、テストしたMySQLデータベースのEUC-JPからUTF-8への移設は、ACCESS上ではうまく動作してくれました。
現在稼動しているシステムではACCESSを使ったデータベース操作の他に、MySQL+PHPを使ったWEB見積依頼、WEB見積回答システムも稼動しています。
そこで今度はPHPもUTF-8に対応させてみました。
まずはEUC-JPでコーディングしていたPHPプログラムをUTF-8に変換し、HTML出力のヘッダーもUTF-8に変更してデータベースを表示させてみます。
するとIEでは問題なく表示されましたが、FireFoxだとShift_JISで表示されて完全に化けちゃいました。
表示メニューの文字エンコーディングでUnicode(UTF-8)を指定してやれば問題なく表示できるんですけど、ヘッダーのcharset=UTF-8は無視されてるようで勝手に文字コードをShift_JISにして表示しちゃってます。
いろいろ試してみたんですが、結局サーバー側でphp.iniのdefault_charsetをUTF-8に修正することでFireFoxでもUTF-8で問題なく表示されるようになりました。
IE以外ではHTMLのヘッダーのcharset指定よりphp.iniのdefault_charsetの方が優先なんですね。知りませんでした。
とりあえずこれでPHPのUTF-8化はOK!かと思ったら、、商品の金額の前の半角の「¥」マークがバックスラッシュで表示されちゃってます。これは「¥」を”¥”に書き換えることで解決しました。
他に文字化け等は見つかりませんでしたので、これでPHPのUTF-8化テストも完了。いつでもシステムをUTF-8に変更できそうです。
追記
その後、PHPで自動送信される見積りメールが文字化けしてるのを発見。これはmb_send_mailの直前に
mb_language(‘Japanese’);
mb_internal_encoding(“UTF-8”);
の二行を追記して文字コードを指定することでクリアできました。