我尝试将 UTF-8 与 PHP 一起使用,我的站点上的输出似乎还可以(在测试时显示正确的 äöüß 等),但有一个简单的问题......当我使用它时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() 2 而不是 1?