web-dev-qa-db-ja.com

ini_set( 'default_charset'、 'UTF-8');を設定する必要がありますか?

各ページのフレームワークは次のことを行います。

_ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.func_overload',7);
header('Content-Type: text/html; charset=UTF-8');
_

私もini_set( 'default_charset', 'UTF-8' );を行う必要がありますか?

10
dynamic

いいえ、必要はありません。

header('Content-Type: text/html; charset=UTF-8');

これをすべてのページにすでに設定します

8

他の回答で説明されているように、http-headerに関しては問題ありません。

しかし:デフォルトの文字セットを認識するいくつかの関数があります

FILTER_SANITIZE_FULL_SPECIAL_CHARS の説明から:

Htmlspecialcharsと同様に、このフィルターはdefault_charsetを認識し、現在の文字セットで無効な文字を構成する一連のバイトが検出されると、文字列全体が拒否され、長さが0の文字列になります。

5
itpastorn

参照してください https://bugs.php.net/bug.php?id=2998 一部のディストリビューションにまだ問題があるように見えます

テストケース

echo "ini_get('default_charset') ". ini_get('default_charset')."<br>";

if (!ini_set('default_charset', 'utf-8')) {
echo "could not set default_charset to utf-8<br>";
}
5
gmgj

default_charset ini設定が機能するはずです。 PHPは、常にこの設定を使用してContent-type:ヘッダーにデフォルトで文字エンコーディングを出力します

3
PoX