Si una aplicación web es conforme a UTF-8, no se requiere ninguna acción adicional. Para aplicaciones que dependen de rutas en una codificación diferente a UTF-8 para la I/O, una directiva INI debe ser definida explícitamente. La verificación de los parámetros de codificación INI se basa en el orden en la memoria (core):
Se han introducido varias funciones para la gestión de las páginas de códigos:
Estas funciones son seguras para subprocesos múltiples.
La salida de la página de códigos de la consola se ajusta en función de la codificación utilizada en PHP. Dependiendo de la página de códigos OEM del sistema concreto, la salida visible podría o no ser correcta. Por ejemplo, con cmd.exe por defecto y en un sistema con la página de códigos OEM 437, las salidas en las páginas de códigos 1251, 1252, 1253 y otras pueden mostrarse correctamente utilizando UTF-8. En los mismos sistemas, los caracteres en páginas de códigos como 20932 probablemente no se mostrarán correctamente. Esto se refiere a las reglas del sistema para páginas de códigos, la compatibilidad de la fuente y la elección del programa de consola utilizado. PHP define automáticamente la página de códigos de la consola de acuerdo con las reglas de codificación desde php.ini. Utilizar consolas alternativas en lugar de cmd.exe directamente podría ofrecer una mejor experiencia en algunos casos.
Sin embargo, tenga en cuenta que cambiar la página de códigos después de que la solicitud haya comenzado puede causar efectos secundarios inesperados en CLI. La manera preferible es a través de php.ini. Cuando PHP CLI se utiliza en un emulador de consola que no soporta Unicode, es posiblemente necesario evitar cambiar la página de códigos de la consola. La mejor manera de lograr esto es definir la codificación interna o predeterminada para que coincida con la página de códigos ANSI. Otro método es definir la directiva INI output_encoding e input_encoding a la página de códigos requerida, sin embargo, en este caso la diferencia entre las páginas de códigos internas y de I/O puede causar mojibake. En raros casos, si PHP falla graciosamente, la página de códigos original de la consola puede no ser restaurada. En este caso, el comando chcp puede ser utilizado para restaurarla manualmente.
Atención particular para los sistemas DBCS - el cambio de página de códigos durante la ejecución utilizando ini_set() puede causar problemas de visualización. A diferencia de los sistemas no DBCS, los caracteres extendidos requieren dos consolas para ser mostrados. En algunos casos, solo la coincidencia de caracteres en el conjunto de glifos de la fuente puede ocurrir, sin cambio de fuente. Esta es la naturaleza de los sistemas DBCS, la manera más simple de prevenir problemas de visualización es evitar el uso de ini_set() para el cambio de página de códigos.
Como consecuencia del soporte de UTF-8 en los flujos, los scripts PHP ya no están limitados a nombres de ficheros ASCII o ANSI. Esto está listo para su uso en CLI. Para otros SAPI, la documentación para el servidor correspondiente es útil.
El soporte para rutas largas es transparente. Las rutas más largas que 260 bytes son
automáticamente prefijadas por \\?\
. La longitud máxima de la ruta es
limitada a 2018 bytes. Tenga en cuenta que el límite de los segmentos de ruta (longitud del
basename) persiste.
Para una mejor portabilidad, se recomienda encarecidamente gestionar los nombres de ficheros, I/O y otros temas relacionados en UTF-8. Además, para las aplicaciones de consola, el uso de una fuente TrueType es preferible y el uso de ini_set() para el cambio de página de códigos es desaconsejado.
La extensión readline es soportada
a través de la » biblioteca
WinEditLine. Así, la interfaz de sistema interactiva CLI también es
soportada (php.exe -a
).
PHP_FCGI_CHILDREN es ahora respetado. Si esta variable de entorno está definida, el primer proceso php-cgi.exe ejecutará el número especificado de hijos. Estos compartirán el mismo socket TCP.
Se ha añadido soporte para ftok()