文字コード : PHP

Pocket

PHPの文字周りの覚書

PHPにおける文字コードの基本

参考サイト >>PHPの文字化けを本気で解決する – ぎじゅっやさん

変換の基準となる文字コードを一つ設ける。
文字コードの変換はすべてプログラム上で行い、
自動変換させるのは極力無くす。
これが最も効果的な方法。
引用サイト PHPの文字化けを本気で解決する – ぎじゅっやさん

フォームからの送信される文字コード

フォームから送信されるPOSTデータは、フォームを記述したHTMLファイルの文字コードで送信される。

mbstring.internal-encoding

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

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" />');
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

PHPの初期設定方法

  • php.ini
  • htaccess
  • ini_set関数

文字関連の設定

>変換の基準となる文字コードを一つ設ける。
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

コメント

Trackbacks

  1. […] UTF-8のページがIEで表示されない PHPの文字周りの覚書 header(“Content-Type: text/html; […]

    ピンバックbyヘッダに文字コード【PHP】 | tycolとweb — 2010-05-13 @ 2:08 PM


コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。