Multibyteについて †1 byteで表現可能な値は256通り。2bytesもあれば日本語や中国語など表現できるが、文字コードによってbyte数が違ったりする。EUCは2-3bytesだったりUTF-8は最大6bytesなどいろいろある 携帯向けのサイト構築の場合は、HTTP出力の文字エンコーディングをSJISにする必要がある 拡張モジュール †mbstring > iconv Webシステムの文字エンコーディング = PHPの内部文字エンコーディングにするとよい mbstring †内部エンコーディング(PHP内部で使用する文字エンコーディング) †mbstring.internal_encoding mb_internal_encoding(スクリプト時) で EUC-JPかUTF-8にする HTML入力文字エンコーディングの自動変換(Browser -> PHP(サーバ側)) †mbstring.encoding_translation = On 有効にする HTML入力で利用されている可能性のある文字エンコーディング †mbstring.http_input = auto mb_http_input(スクリプト時) auto = ASCII,JIS,UTF-8,EUC-JP,SJISと同等 <- 通常はこちらでよい HTML出力文字エンコーディングの自動変換 †mbstring.http_output 出力文字エンコーディングの変換を行うにはmb_output_handler関数を出力バッファに登録する output_handler = mb_output_handler(php.ini) on_start('mb_output_handler')(スクリプト時) ↑これを行うと出力と内部文字エンコーディングが同じでも変換を試みる iconv †文字コードと文字エンコーディング †
BOM - Byte Order Mark。 UTF-16/UTF-32の仕様で設定出来る。Unicode規格ではBOMはつけてもつけなくてもいが、RFC2781(3.2 Byte order mark (BOM))では使用方法などが規定されている MIMEエンコーディング †メール †日本語のメールはISO-2022-JPを使用し、SubjectはMIMEエンコードしなければいけない。 mb_send_mail mbstring.language = Japanese (php.ini) PHPとの関連性 †PHPのスクリプトエンジンと文字列関数はISO-8859エンコーディングで動作するように作られている。そのためISO-8859に互換性があるEUC-JP, UTF-8を使用しないといけない。 ※EUC-JPの仮名は50音順にソートできるが、UTF-8ば仮名を使って日本語のソートが出来ない |