HTTP Input and Output

- « Basics of Japanese multi-byte encodings

- Supported Character Encodings »

- PHP Manual
- Multibyte String
- HTTP Input and Output

# HTTP Input and Output

HTTP input/output character encoding conversion may convert binary data also. Users are supposed to control character encoding conversion if binary data is used for HTTP input/output.

> Note:

> If `enctype` for HTML form is set to `multipart/form-data` and `mbstring.encoding_translation` is set to On in php.ini the POST'ed variables and the names of uploaded files will be converted to the internal character encoding as well. However, the conversion isn't applied to the query keys.

- HTTP Input

  There is no way to control HTTP input character conversion from a PHP script. To disable HTTP input character conversion, it has to be done in php.ini.

  Example #1 Disable HTTP input conversion in php.ini

      ;; Disable HTTP Input conversion
      mbstring.http_input = pass
      ;; Disable HTTP Input conversion
      mbstring.encoding_translation = Off

  When using PHP as an Apache module, it is possible to override those settings in each Virtual Host directive in httpd.conf or per directory with .htaccess. Refer to the Configuration section and Apache Manual for details.

- HTTP Output

  There are several ways to enable output character encoding conversion. One is using php.ini, another is using ob_start() with mb_output_handler() as the `ob_start` callback function.

Example #2 php.ini setting example

    ;; Enable output character encoding conversion for all PHP pages

    ;; Enable Output Buffering
    output_buffering    = On

    ;; Set mb_output_handler to enable output conversion
    output_handler      = mb_output_handler

Example #3 Script example

    <?php// Enable output character encoding conversion only for this page// Set HTTP output character encoding to SJISmb_http_output('SJIS');// Start buffering and specify "mb_output_handler" as// callback functionob_start('mb_output_handler');?>