(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_internal_encoding — Lit/modifie l'encodage interne
Lit/modifie l'encodage interne.
encoding
encoding
sert lors des conversions des
chaînes en provenance et en direction du web, ainsi que lors de
la création de chaînes avec le module mbstring. Vous devez garder à
l'esprit que l'encodage interne est totalement différent
de celui pour les regex multioctets.
Si encoding
est fourni,
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Dans ce cas, l'encodage des caractères pour les regex multioctets
n'est pas changé. Si encoding
est omis, mb_internal_encoding() retourne le
nom de l'encodage courant.
À partir de PHP 8.0.0, une ValueError est lancée si la valeur
de encoding
est un encodage invalide.
Antérieur à PHP 8.0.0, une E_WARNING
était émise à la place.
Version | Description |
---|---|
8.0.0 |
encoding est désormais nullable.
|
8.0.0 |
Lance désormais une ValueError si
encoding est un encodage invalide.
Auparavant, une E_WARNING était émise à la place.
|
Exemple #1 Exemple avec mb_internal_encoding()
<?php
/* Utilise l'encodage interne UTF-8 */
mb_internal_encoding("UTF-8");
/* Affiche l'encodage interne courant */
echo mb_internal_encoding();
?>
Especially 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 debugging 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.
all together
<?php
// ------------------------------------------------------------
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_regex_encoding('UTF-8');
// ------------------------------------------------------------
?>
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. Make the change to "utf-8" but leave the /source/ file encoding unchanged:
<?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 results will be as expected.
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