Entrada/Salida de HTTP

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 atributo enctype del elemento form está establecido a multipart/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 a multipart/form-data y mbstring.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.

  • Entrada HTTP

    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.

  • Salida HTTP

    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');

?>