第11章 文字セットの符号化

目次

文字セットの符号化

文字セットの符号化

テキスト形式のデータの符号化方式にはいろいろあります。中でもよく使われているのが ISO-8859-1 (Latin1) と UTF-8 です。 定数 SMARTY_RESOURCE_CHAR_SET で何か他の符号化方式を指定しない限り、 Smarty は、 mbstring が有効な場合は UTF-8、そして有効でない場合は ISO-8859-1 を内部文字セットとみなします。

注意

ISO-8859-1 は、PHP が産まれたときからずっと、デフォルトの内部文字セットでした。 Unicode が出だしたのは 1991 年からです。その後、Unicode がどんどん幅をきかせるようになりました。 というのも Unicode は、既知の文字のほとんどを、文字体系 (ラテン文字、キリル文字、日本語、……) をまたがって符号化できたからです。 UTF-8 は unicode で最もよく使われている符号化方式です。 何千もの文字を、最小限のオーバーヘッドで表せます。

unicode と UTF-8 は今やあちこちに広まっているので、これを使うことを強くおすすめします。

注意

Smarty の内部コードやコアプラグインは、Smarty 3.1 で完全に UTF-8 対応になりました。unicode 互換の機能を使うには、 mbstring が必要です。お遣いの環境でこれが有効になっていない場合は、 Smarty で UTF-8 の全機能を使うことはできません。

例 11.1. さまざまな文字符号化方式の設定


// 日本語の文字符号化方式
if (function_exists('mb_internal_charset')) {
  mb_internal_charset('EUC-JP');
}
define('SMARTY_RESOURCE_CHAR_SET', 'EUC-JP');
require_once 'libs/Smarty.class.php';
$smarty = new Smarty();