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


Which charset considering functions changed from PHP5.2 to PHP5.4

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

echo "test: ".htmlspecialchars("äöü");

返回将仅为"test:"。

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

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

如果不设置字符集,PHP5.4中是否有其他功能将无法正常工作?

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.incompatible.php

对于latin1中的遗留项目,我们根据以下说明用自制函数htmlXspecialchar替换htmlspecialchar:http://ufive.unibe.ch/?c=php54entitiesfix&q=&l=e