PHPの文字周りの覚書
参考サイト >>PHPの文字化けを本気で解決する – ぎじゅっやさん
変換の基準となる文字コードを一つ設ける。
文字コードの変換はすべてプログラム上で行い、
自動変換させるのは極力無くす。
これが最も効果的な方法。
引用サイト PHPの文字化けを本気で解決する – ぎじゅっやさん
フォームから送信されるPOSTデータは、フォームを記述したHTMLファイルの文字コードで送信される。
mbstring.internal_encodingはmbstring関数の変換元文字コードのデフォルト値。
mbstring関数で変換元コードを指定すると値を上書き。
php.iniの設定
mbstring.internal_encoding = utf-8
phpコード
$str = mb_convert_encoding($str, ‘sjis’);
UTF-8からSJISへ変換する。
下記と同じ動作をする。
$str = mb_convert_encoding($str, ‘sjis’, ‘utf-8’);
※mbstring関数は原則、変換元文字コードと、変換先文字コードを入力するべき。
default_charsetに値を設定すると出力時に下記のコードが自動で出力される。
header(‘Content-Type: text/html; charset:設定値’)
UTF-8の場合
php.iniの設定
mbstring.default_charset = ‘utf-8’
出力コード
header(‘Content-Type: text/html; charset:utf-8”)
default_charsetをオフにした場合はプログラム内でContent-Typeを記述する
header(‘Content-Type: text/html; charset:設定値’)
文字化けを防ぐ場合はプログラムで、header関数とmetaタグで文字コードを指定するのが良い。
utf-8の場合
header("Content-Type: text/html; charset=utf-8");
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
print('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />');
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
>変換の基準となる文字コードを一つ設ける。
UTF-8とする。
PHPプログラムファイルの文字コードはUTF-8とする。
;; Disable Output Buffering
output_buffering = Off
;; Set HTTP header charset
; default_charset = utf-8
;; Set default language to Japanese
mbstring.language = Japanese
;; HTTP input encoding translation is enabled.
mbstring.encoding_translation = off
;; Set HTTP input encoding conversion to auto
mbstring.http_input = pass
;; Convert HTTP output to UFT-8
mbstring.http_output = pass
;; Set internal encoding to UTF-8
mbstring.internal_encoding = utf-8
;; Do not print invalid characters
mbstring.substitute_character = none
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
[…] UTF-8のページがIEで表示されない PHPの文字周りの覚書 header(“Content-Type: text/html; […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。