PHP 8.6.0 Beta 1 is available for testing

mb_internal_encoding

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

mb_internal_encoding Устанавливает или получает внутреннюю кодировку символов файла скрипта

Описание

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

Функция устанавливает или получает внутреннюю кодировку скрипта.

Список параметров

encoding

Параметр encoding — имя кодировки символов, в которую преобразуется кодировка входных данных HTTP-запроса, из которой преобразуется кодировка HTTP-вывода, а также это имя кодировки по умолчанию для функций модуля mbstring, которые работают со строками. Обратите внимание: внутренняя кодировка и кодировка для многобайтовых регулярных выражений — не одно и то же.

Возвращаемые значения

Если аргумент encoding установили, функция Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка. При этом кодировка символов для многобайтовых регулярных выражений не изменяется. Функция возвращает имя текущей внутренней кодировки символов, если аргумент encoding не установили.

Ошибки

Начиная с PHP 8.0.0 функция выбрасывает исключение ValueError , если в параметр encoding передали недопустимое значение кодировки. До PHP 8.0.0 вместо этого функция выдавала ошибку уровня E_WARNING .

Список изменений

Версия Описание
8.0.0 Параметр encoding теперь принимает значение null .
8.0.0 Теперь функция выбрасывает исключение ValueError , если в параметр encoding передали недопустимое значение кодировки. Раньше вместо этого функция выдавала ошибку уровня E_WARNING .

Примеры

Пример #1 Пример использования функции mb_internal_encoding()

<?php
/* Установка внутренней кодировки в UTF-8 */
mb_internal_encoding("UTF-8");
/* Вывод на экран текущей внутренней кодировки */
echo mb_internal_encoding();
?>

Смотрите также

  • mb_http_input() - Определяет кодировку символов входных данных HTTP-запроса
  • mb_http_output() - Устанавливает или получает кодировку символов HTTP-вывода
  • mb_detect_order() - Устанавливает или получает порядок определения кодировки символов
  • mb_regex_encoding() - Устанавливает или получает кодировку символов для многобайтового регулярного выражения

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 5 notes

up
18
Joachim Kruyswijk
20 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
6
webfav at web dot de
10 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
3
mortoray at ecircle-ag dot com
21 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
11 years ago
Note that mb_internal_encoding is not necessary in PHP 5.6
up
0
mdirks at gulfstreamcoach dot com
19 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
+Добавить

AltStyle によって変換されたページ (->オリジナル) /