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.| CARVIEW |
mb_internal_encoding
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_internal_encoding — Lee/modifica la codificación interna
Descripción
Lee/modifica la codificación interna.
Parámetros
encoding-
encodingse 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,
Esta función retorna true en caso de éxito o false si ocurre un 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 is nullable now.
|
| 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 el tipo de codificación de caracteres HTTP
- mb_http_output() - Lee/modifica la codificación de visualización
- mb_detect_order() - Lee/modifica el orden de detección de codificaciones
- mb_regex_encoding() - Define/Recupera la codificación de caracteres para las expresiones regulares multioctetos
User Contributed Notes 5 notes
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