2012-08-01 5 views
5

Al tener un archivo guardado en la norma ISO-8859-1 y usando el comandoQué charset teniendo en cuenta las funciones cambiado de PHP5.2 a PHP5.4

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

El regreso será única "prueba".

Esto se debe a que el juego de caracteres estándar para htmlspecialchars cambió a UTF-8 en PHP5.4. Es necesario establecer explícitamente el conjunto de caracteres:

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

¿Hay otras funciones en PHP5.4, que no funciona correctamente más, si no se establece el conjunto de caracteres?

Respuesta

1

htmlentities parece ser otra función que se ha cambiado: http://de3.php.net/manual/de/migration54.other.php

La guía de migración de PHP 5.2-> 5.3 no da más funciones que cambiaron el juego de caracteres por defecto: http://de3.php.net/manual/de/migration53.php

Así que probablemente es sólo htmlspecialchars() y htmlentities

de todos modos, creo que los dos definitivamente debe ir a la sección "Cambios incompatibles con versiones anteriores de" -lista http://de3.php.net/manual/de/migration54.incompatible.php

+2

Quiero añadir algo: PHP 5.4 se supone que debe ser "PHP 6.0", que se supone que debe ser completa UTF 8, por lo que en un futuro cercano, todas las funciones estarán configuradas por defecto en UTF-8. –

+0

@David Bélanger: Esto es muy impreciso. Nunca hubo PHP 6.0 y PHP 5.4 nunca se suponía que fuera PHP 6.0. También PHP 6.0 - si alguna vez - se supuso que era UTF-16, no UTF-8. – hakre

+0

@hakre False. Ver http://smartwebdeveloper.com/php/php-6-features-release-date-hosting-download –

Cuestiones relacionadas