ログイン



Tags » ‘多言語対応’

PHPのデフォルトエンコーディングがUTF-8に

4月 3rd, 2010 by

PHP、デフォルトエンコーディングをUTF-8へ (default_charset)

しかし、変化は確実に訪れている。Mind the encodings!において「default_charset」がiso-8859-1 からUTF-8へ変更されたことが紹介されている。ブラウザはサーバからのデータにエンコーディングの指定がなかった場合、これまではISO- 8859-1をデフォルトエンコーディングとしていた。逆にPHPがブラウザからデータを受け取る場合もISO-8859-1をデフォルトエンコーディングとしてきた。今回、この部分のデフォルトがUTF-8に変更された。

わかりやすいところでは、コメントアウトされているがphp.iniの「default_charset = “iso-8859-1″」がそれに該当する。62101のコミットで同設定が「default_charset = “UTF-8″」と変更された。なお設定自身はコメントアウトされており、より正確には、「default_charset」が設定されていない場合のデフォルトエンコーディングがISO-8859-1からUTF-8に変更されたということになる。これまでエンコーディングの指定がなかった場合ISO- 8859-1として処理されてきたクライアントから送られてくるデータはデータはUTF-8として処理されることになる。

default_encodingがphp.iniで指定されなかった場合の、デフォルトエンコーディングがUTF-8になったそうだ。日本語圏だと、古いWebサイトには、EUC-jpやShift-JISが使われている場合もあるが、今時のWebサイトには基本的にUTF-8が使われている。日本語を2バイト文字として表すShift-JISやEUC-jpと比べて、日本語を3倍と文字で表すUTF-8は、データ量が大きくなってしまうというデメリットはある。だが、今となっては、大した問題ではない。多言語対応できるというメリットを考えると、UTF-8以外でWebサイトを作る合理的な理由はないだろう。