PHPで日本語を扱うときの注意点
日本語は英語とは異なり、1文字を2バイト以上で表すマルチバイト文字であるため、文字コードに注意する必要があります。文字コードは、文字一つ一つを符号化した(番号に置き換えた)ものです。日本語文字コードの代表的なものにはJIS、Shift_JIS、EUC-JP、UTF-8があります。
文字コードの種類
1バイト形文字コード(半角文字)
ASCII(アスキー)
JIS X 0201(JISローマ字、カタカナ)
2バイト形文字コード(全角文字)
JIS X 0208
ISO-2022-JP(JIS)
Shift_JIS
EUC-JP
JIS X 0212(補助漢字)
多言語文字コード
Unicode(ユニコード)
UTF-8
UTF-16
JIS はJIS規格で規定されたもので、メールなどでよく利用されます。Shift_JISはWindowsやMacなどで標準的に使用されています。EUC-JPのEUCはExtendend UNIX Codeの略で、UNIXでよく使用されています。また、UTF-8はUnicodeという、世界の多言語を同時に表す方式の一つで、最近よく利用されています。PHPはほとんどのOSで利用できますが、元々はUNIXで使用するために開発された言語です。Shift_JISやUnicodeで記述することも出来ますが、文字化けなどの問題を起こすこともありますので、EUC-JPで記述することが望ましいでしょう。
文字コードEUC-JPで使うPHPの日本語設定
「php.ini」をテキストエディタで開き、編集を行います。下記の項目の設定を変更してください。設定の前にそれぞれのコードの先頭に着いている「;」を外してください。間違いなく変更を終えましたらApacheを再起動して設定を反映させてください。
- 出力バッファリングを無効化します
output_buffering = off - デフォルトのHTTP charsetをEUCにします
default_charset = EUC-JP - マルチバイト環境を設定します
extension=php_mbstring.dll - デフォルトの言語を日本語にします
mbstring.language = Japanese - HTTP入力変換を有効にします
mbstring.encoding_traslation = On - HTTP入力文字コードを自動にします
mbstring.http_input = auto - HTTP出力文字コードをEUCにします
mbstring.http_output = EUC-JP - 内部文字コードをEUCにします
mbstring.internal_encoding = EUC-JP - 処理できない代替文字を出力しません
mbstring.substiture_character = none; - 文字コード検出のデフォルト値を自動にします
mbstring.detect-order = auto
テキストエディタはEUC-JPが保存できるものである必要があります。Windows付属のメモ帳はEUC-JPに対応していないため文字化けが起きてしまいます。シェアウェアの「秀丸エディタ」は使い勝手がよく人気のソフトですが、お金がかかってしまいます。フリーソフトである「サクラエディタ」や「TeraPad」などは無料であり、EUC-JPのみならず他の言語にも対応していますので、これらを利用しましょう。PHPは日本語を処理できますが、もともとシングルバイト言語用に作られているため、日本語の文字列を扱う場合は、マルチバイト関数というものを使うと言った工夫が必要です。
