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
In PHP 4.3.2 or earlier versions, there was a limitation in this
functionality that mbstring does not perform
character encoding conversion in POST data if the
enctype attribute in the form
element is set to multipart/form-data.
So you have to convert the incoming data by yourself in this case
Beginning with PHP 4.3.3, 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.
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.
Disable HTTP input conversion in php.ini
;; Disable HTTP Input conversion mbstring.http_input = pass ;; Disable HTTP Input conversion (PHP 4.3.0 or higher) 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.
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
// Enable output character encoding conversion only for this page
// Set HTTP output character encoding to SJIS mb_http_output('SJIS');
// Start buffering and specify "mb_output_handler" as // callback function ob_start('mb_output_handler');