PHPは、元々、英語圏用に開発されたプログラミング言語です。
そのため、日本語を取り扱うときは、プログラムを書く時に自分で処理する必要があります。
英語の場合は、1文字当り1バイトで文字を表現できますが、日本語をコンピューターで表現するためには、 1文字につき2バイト以上が必要です。
英語をシングルバイト文字と言い、日本語の場合はマルチバイト文字といいます。
PHPのマルチバイト対応は、mbstring拡張を使用します。mbstring拡張は、 マルチバイト文字の文字エンコーディングの相互変換、文字列処理関数、その他をサポートしています。
マルチバイト文字列の処理を行う関数の一例:
コンピューターの内部は1か0かで動いています。 「A」とか「あ」 といった文字そのものがコンピューターの内部を移動しているわけではありません。 そのため、コンピューターで文字を取り扱うためには、文字をコンピューター内部の「1」「0」を組み合わせた ”コード”に変換する必要があります。
例)
「表」という文字 は、コンピューター内部では、0x955Cとして取扱います。
文字と内部コードの対応関係のことを、文字エンコーディングといいます。文字エンコーディングは、 コンピューターの種類の違いによって複数の種類が存在します。
文字エンコーディングの種類:
※)PHPでは、複数の文字エンコーディングに対応しています。これからは、「UTF-8」を使用するようにしましょう。
文字エンコーディング ----------------------- |
主な用途 ---------------- |
|
ASCII | ・・・ | パソコン |
シフトJIS | ・・・ | 日本語パソコン |
EUC-JP | ・・・ | Linuxサーバー |
ISO-2022-JP (JIS) | ・・・ | 日本語メール |
UTF-8 | ・・・ | 共通 |
(EBCDIC) | ・・・ | (大型コンピューター) |
① 入力:入力文字エンコーディング
② PHP:内部文字エンコーディング
③ PHPスクリプト:スクリプト文字エンコーディング
④ データベース:データベース文字エンコーディング
⑤ 出力・表示:出力文字エンコーディング
※文字コード変換用関数: mb_convert_encoding()
備考)
・mb_internal_encodingを指定するときは、ソースコードの文字コードを指定するようにします。
「表」 : シフトJIS では … Ox955C
※文字コード変換用関数: mb_convert_encoding()