Changed Default Encoding to UTF-8
As of PHP 5.4.0, the encoding of multiple html_*()
functions defaults to UTF-8
, where previously it defaulted to ISO-8859-1
. This changes the result when the encoding is not explicitly provided:
htmlentities('é');
See execution result.
As of PHP 5.6.0, it defaults to the value of the default_charset
INI directive.
Affected functions:
html_entity_decode()
htmlentities()
htmlspecialchars()
get_html_translation_table()
Solution
The simplest solution is to provide the original default values explicitly:
htmlentities('é', ENT_COMPAT, 'ISO-8859-1');
See execution result.
It's potentially dangerous to switch the default_charset
INI directive to ISO-8859-1
, because other functions and directives depend on it. Setting the default values explicitly will provide the safest solution and the widest compatibility.