考虑到函数的哪个字符集从PHP5.2变为PHP5.4

R_U*_*ser 5 php character-encoding htmlspecialchars

将文件保存在ISO-8859-1中并使用该命令时

echo "test: ".htmlspecialchars("äöü");
Run Code Online (Sandbox Code Playgroud)

返回将只是"测试:".

这是因为htmlspecialchars的标准字符集在PHP5.4中更改为UTF-8.您需要显式设置charset:

echo "test: ".htmlspecialchars("äöü", ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)

PHP5.4中是否还有其他功能,如果你没有设置charset,它将不再正常工作?

R_U*_*ser 1

htmlentities似乎是另一个已更改的函数:http ://de3.php.net/manual/de/migration54.other.php

PHP 5.2->5.3 的迁移指南没有提供任何更多更改默认字符集的函数:http://de3.php.net/manual/de/migration53.php

所以可能只是htmlspecialchars()并且htmlentities

无论如何,我认为这两个绝对应该进入“向后不兼容的更改”列表http://de3.php.net/manual/de/migration54.inknown.php

  • 我想补充一点:PHP 5.4 应该是“PHP 6.0”,它应该是完整的 UTF-8,所以在不久的将来,所有函数都将默认设置为 UTF-8。 (2认同)