mb_internal_encoding

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

mb_internal_encodingLee/modifica la codificación interna

Descripción

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

Lee/modifica la codificación interna.

Parámetros

encoding

encoding se utiliza durante las conversiones de strings provenientes y dirigidas hacia la web, así como durante la creación de strings con el módulo mbstring. Se debe tener en cuenta que la codificación interna es completamente diferente de la de las regex multioctetos.

Valores devueltos

Si encoding es proporcionado, Devuelve true en caso de éxito o false en caso de error. En este caso, la codificación de caracteres para las regex multioctetos no se cambia. Si encoding es omitido, mb_internal_encoding() devuelve el nombre de la codificación actual.

Errores/Excepciones

A partir de PHP 8.0.0, se lanza una ValueError si el valor de encoding es una codificación inválida. Anterior a PHP 8.0.0, se emitía una E_WARNING en su lugar.

Historial de cambios

Versión Descripción
8.0.0 encoding ahora es nullable.
8.0.0 Ahora lanza una ValueError si encoding es una codificación inválida. Anteriormente, se emitía una E_WARNING en su lugar.

Ejemplos

Ejemplo #1 Ejemplo con mb_internal_encoding()

<?php
/* Utiliza la codificación interna UTF-8 */
mb_internal_encoding("UTF-8");

/* Muestra la codificación interna actual */
echo mb_internal_encoding();
?>

Ver también

  • mb_http_input() - Detecta la codificación de caracteres de entrada HTTP
  • mb_http_output() - Establece/obtiene la codificación de caracteres de salida HTTP
  • mb_detect_order() - Establece/obtiene el orden de detección de codificaciones de caracteres
  • mb_regex_encoding() - Establecer/obtener la codificación de caracteres para expresiones regulares multibyte

add a note

User Contributed Notes 5 notes

up
15
Joachim Kruyswijk
18 years ago
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.
up
7
webfav at web dot de
9 years ago
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');

// ------------------------------------------------------------
?>
up
4
mortoray at ecircle-ag dot com
19 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. 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.
up
1
Anonymous
9 years ago
Note that mb_internal_encoding is not necessary in PHP 5.6
up
0
mdirks at gulfstreamcoach dot com
17 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