La conversión de una codificación de caracteres desde una entrada/salida HTTP también puede convertir datos binarios. Si se utilizan datos binarios para la entrada/salida de HTTP, los usuarios tienen el deber de controlar la conversión de la codificación de caracteres.
Nota:
En la versión de 4.3.2 de PHP o anteriores existe una limitación en esta funcionalidad de
mbstring
que consiste en que no se realiza la conversión de la condificación de caracteres de los datos enviados mediante POST si el atributoenctype
del elementoform
está establecido amultipart/form-data
. En este caso, es el usuario el que ha de convertir los datos entrantes si fuera necesario.Comenzando con PHP 4.3.3, si el atributo
enctype
de un formulario HTML se establece amultipart/form-data
ymbstring.encoding_translation
está establecido a 'On' en php.ini, las variables y los nombres de los ficheros subidos mediante POST serán convertidos también a la codificación de caracteres interna. Sin embargo, la conversión no se aplicará a las claves de las consultas.
No hay ninguna forma de controlar la conversión de caracteres de la entrada HTTP desde un script de PHP. Para desactivar dicha conversión, hay que realizarlo en php.ini.
Ejemplo #1 Desactivar la conversión de caracteres de la entrada HTTP en php.ini
;; Deshabilitar la conversión de la entrada HTTP mbstring.http_input = pass ;; Deshabilitar la conversión de la entrada HTTP (PHP 4.3.0 o posterior) mbstring.encoding_translation = Off
Cuando se utiliza PHP como un módulo de Apache, es posible anular esta configuración en cada directiva Host Virtual en el fichero httpd.confo por cada directorio, a través de un fichero .htaccess. Consulte la sección de Configuración y el Manual de Apache para más detalles.
Hay varias formas de habilitar la conversión de caracteres de salida.
Una es utilizando php.ini, otra es
utilizando ob_start(), con
mb_output_handler() como la
función de llamada de retorno de ob_start
.
Ejemplo #2 Ejemplo de configuración de php.ini
;; Habilitar la conversión de codificaciones de caracteres de salida para todas las páginas de PHP ;; Hablitar el almacenamiento en búfer de salida output_buffering = On ;; Establecer mb_output_handler para habilitar la conversión de salida output_handler = mb_output_handler
Ejemplo #3 Ejemplo de script
<?php
// Habilita la conversión de codificaciones de caracteres de salida sólo para esta página
// Establecer la codificación de caracteres de salida HTTP a SJIS
mb_http_output('SJIS');
// Iniciar el almacenamiento en búfer y especificar "mb_output_handler" como
// la función de llamada de retorno
ob_start('mb_output_handler');
?>