PHP

PHP 文字化けとエンコーディング

 

エンコーディングに気をつける

  • 外部ファイルを読み込んだ時
  • フォームから日本語が送信される時

 

なぜ

  • 日本語はマルチバイト文字なので、英語圏のように1バイト文字ではない。
  • 読み込んだ外部ファイルの情報がSJISかつPHPスクリプトがUTF-8の場合に文字化けが発生する。
  • 外部から受け取った日本語の情報はエンコーディングする必要がある

 

対策① mb_convert_encoding()

 

 

外部ファイルから読み込んだ情報をmb_convert_encoding()でUTF-8に変換する

$data = simplexml_load_file($url);
$data = mb_convert_encoding ($data , 'UTF-8', 'ASCII, JIS, UTF-8, SJIS');

第3引数をautoにする場合は、mbstring.language = Japaneseでないと機能しない。

だから、明示的に指定しています。

 

対策② 日本語向けphp.ini

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype=
;mbstring.script_encoding=

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)