:::: MENU ::::

PHPの文字化け対策

ターミナルとかシェルの文字コードを変更

$ sudo vi /etc/sysconfig/i18n

LANG="ja_JP.UTF-8"
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"

ファイルの文字コードを変更

- 文字コード変換コマンドnkfの使い方まとめ linux - Knowledge Database IT
UTF-8に変更。デフォはISO-2022-JPになってる可能性がある。

$ nkf -w --overwrite index.php
$ nkf -g index.php ←変更されたか確認

php.iniを変更

$ sudo vi /etc/php.ini

output_buffering = Off
;default_charset = UTF-8

[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,EUC-JP,SJIS,JIS,ASCII
mbstring.detect_order = UTF-8,eucJP-win,SJIS-win,JIS,ASCII
mbstring.substitute_character = none;
;mbstring.func_overload = 0
;mbstring.strict_encoding = Off

httpd.confを変更

$ sudo vi /etc/httpd/conf/httpd.conf

AddLanguage ja .ja    ←先頭に持ってくる
LanguagePriority ja    ←先頭に持ってくる
#AddDefaultCharset UTF-8 ←コメントアウト

半角カナでPOST/GETデータが文字化けする場合

- tomimemo - その他メモ
PHP内部のエンコーディング自動判定がミスっているらしい。
短い入力文字だとたまにミスる。
ダミーで日本語文字が書かれたhiddenタグを入れておくといいらしい。

<form>~</form>の中に
<input type="hidden" name="hidden" value="日本語判定用文字列">