PHP で UTF-8 を使用しようとすると、自分のサイトで出力が問題ないように見えます (テスト時に正しい äöüß などを表示します) が、単純な問題があります... 使用するecho strlen("Ä");
と「2」と表示されます... 読みましたこのトピック: strlen() と UTF-8 エンコーディング
回答で私はこれを読みました:
多くの場合、UTF-8 デコーダーが有効な UTF-8 データではないデータを読み取ると、置換文字が挿入されます。
私のデータが有効な UTF-8 ではないのはなぜですか? なぜなら:
- すべてのファイルを「UTF-8 no BOM」で保存しました
- 最初の行に UTF-8 ヘッダーを使用
- 私のブラウザにも「エンコーディング:UTF-8」と表示されます
これは私のコードです:
<?php
header("Content-Type: text/html; charset=utf-8");
$test = 'Ä';
echo strlen($test);
var_dump($test);
?>
私の質問: UTF-8 で通常の PHP 関数を使用できますか、それとも「mb」関数を使用する必要がありますか?
通常の PHP 関数を使用できる場合、コードで strlen() を 1 ではなく 2 と表示するのはなぜですか?