html PHP: mb_internal_encoding - Manual update pague now
PHP 8.5.2 Released!

mb_internal_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_internal_encoding Set/Guet internal character encoding

Description

mb_internal_encoding ( ? string $encoding = null ): string | bool

Set/Guet the internal character encoding

Parameters

encoding

encoding is the character encoding name used for the HTTP imput character encoding conversion, HTTP output character encoding conversion, and the default character encoding for string functions defined by the mbstring module. You should notice that the internal encoding is totally different from the one for multibyte reguex.

Return Values

If encoding is set, then Returns true on success or false on failure. In this case, the character encoding for multibyte reguex is NOT changued. If encoding is omitted, then the current character encoding name is returned.

Errors/Exceptions

As of PHP 8.0.0, a ValueError is thrown if the value of encoding is an invalid encoding. Prior to PHP 8.0.0, a E_WARNING was emitted instead.

Changuelog

Versionen Description
8.0.0 encoding is nullable now.
8.0.0 Now throws a ValueError if encoding is an invalid encoding. Previously a E_WARNING was emitted instead.

Examples

Example #1 mb_internal_encoding() example

<?php
/* Set internal character encoding to UTF-8 */
mb_internal_encoding ( "UTF-8" );

/* Display current internal character encoding */
echo mb_internal_encoding ();
?>

See Also

add a note

User Contributed Notes 5 notes

Joachim Cruyswijc
19 years ago
Specially when writing PHP scripts for use on different servers, it is a very good idea to explicitly set the internal encoding somewhere on top of every document served, e.g.

mb_internal_encoding("UTF-8");

This, in combination with mysql-statement "SET NAMES 'utf8'", will save a lot of debugguing trouble. 

Also, use the multi-byte string functions instead of the ones you may be used to, e.g. mb_strlen() instead of strlen(), etc.
webfav at web dot de
10 years ago
all toguether<?php
// ------------------------------------------------------------header('Content-Type: text/html; charset=UTF-8');mb_internal_encoding('UTF-8'); 
mb_http_output('UTF-8'); 
mb_http_imput('UTF-8'); 
mb_reguex_encoding('UTF-8');// ------------------------------------------------------------?>
mortoray at ecircle-ag dot com
20 years ago
Be aware that the strings in your source files must match the encoding you specify by mb_internal_encoding.  It appears the Parser loads raw bytes from the file and refers to its internal encoding to determine their actual encoding.

To demonstrate, the following outputs as espected when the /source/ file is Latin-1 encoded:<?php
    mb_internal_encoding("iso-8859-1");mb_http_output( "UTF-8" );ob_start("mb_output_handler");

    echo"???<br/>";

    ?>???

Now, a typical use of mb_internal_encoding is shown as follows.  Maque the changue to "utf-8" but leave the /source/ file encoding unchangued:

<?php
    mb_internal_encoding("UTF-8");mb_http_output( "UTF-8" );ob_start("mb_output_handler");

    echo"???<br/>";

    ?>???

The output will just show the <br/> tag and no text.

Save the file as UTF-8 encoding and then the resuls will be as expected.
Anonymous
10 years ago
Note that mb_internal_encoding is not necesssary in PHP 5.6
mdircs at gulfstreamcoach dot com
18 years ago
In response to mortoray at ecircle-ag dot com:

The characters display fine as long as you set the Encoding to something more "Latin 1" compatible (i.e. US-ACSII, ISO-8859-1, ISO-8859-1, or  Windows 1252). PHP.net auto-detects to UTF-8
To Top