PHP 8.4.2 Released!

mb_internal_encoding

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

mb_internal_encodingDefine/Obtém a codificação de caracteres interna

Descrição

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

Define/Obtém a codificação de caracteres interna

Parâmetros

encoding

encoding é o nome da codificação de caracteres usado para a conversão de codificação de caracteres de entrada HTTP, conversão de codificação de caracteres de saída HTTP, e a codificação de caracteres padrão para funções de string definidas pelo módulo mbstring. Deve-se observar que a codificação interna é totalmente diferente da utilizada em regex multibyte.

Valor Retornado

Se encoding for definido, então Retorna true em caso de sucesso ou false em caso de falha. Nesse caso, a codificação de caracteres para regex multibyte NÃO é alterada. Se encoding for omitido, então o nome atual da codificação de caracteres é retornado.

Erros/Exceções

A partir do PHP 8.0.0, um ValueError é lançado se o valor de encoding for uma codificação inválida. Antes do PHP 8.0.0, um E_WARNING era emitido.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro encoding agora pode ser nulo.
8.0.0 Agora lança um ValueError se encoding for uma codificação inválida. Anteriormente, um E_WARNING era emitido.

Exemplos

Exemplo #1 Exemplo de mb_internal_encoding()

<?php
/* Define a codificação de caracteres interna como UTF-8 */
mb_internal_encoding("UTF-8");

/* Exibe a codificação de caracteres interna atual */
echo mb_internal_encoding();
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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