PHP文字化け対策のまとめ



ブログ内のみを検索します

PHPの文字化け対策のまとめ


PHPの文字化け解消にはいくつもの方法があるが、忘れぽっいので、まとめておく。

(1).htaccessでphp.iniのエンコードを設定変更する

*便利だが、Apacheは、.htaccessを使用しないよう強く推奨している。

(注意:重要)
客先サイトの場合には、絶対にiniの設定変更しないこと。
文字化けが生ずれば、面倒でも、各ページのPHP先頭に

mb_language('Japanese');
mb_internal_encoding('SJIS、UTF-8他通常htmlページで使用するエンコード');
mb_http_output('SJIS同上');

をつければ解消する。これで個別対応すること。

@アップロード予定サーバーのmbstring.encoding_translationがONかどうか及びmbstring.http_output設定をphpinfo()関数で確認する。

Aサーバーでmbstring.http_output設定をhtaccessで変更できるかどうか以下のコードで確認する



Bhtaccessで変更できれば、htaccessファイルを作成してアップロードする。

*htaccess.txtにコードを書き込む(エンコードの表示方法に注意。phpinfoの表記)
*アップロード後に、属性を604に変更する
*ホスト側のみで、ファイル名を.htaccessに変更する
*ファイル名変更後は、.htaccessファイルは表示されなくなる。見たければ、 このページ参照


C重大注意

$_POST{"忘れるな"}は、mb_convert_encodingで、変更しておくこと。 このPHPブログの当初生じたiphoneでの文字化けは、これで収まった。(当初、メタタグにchartsetをわざといれていなかったことが原因かもしれいが・・・)


(2)file_get_contentsで他のURLの内容を取得する場合

単にmb_detect_encodingでそのURLのエンコード検出し、mb_convert_encodingでサーバーのデフォルトのエンコードへ変えれば文字化けしない。 (下のコードは、このページの「テキストのみ表示し、ページ内を検索」で実際に使用