mb_internal_encoding
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
mb_internal_encoding — Установка/получение внутренней кодировки скрипта
Описание
Установка/получение внутренней кодировки скрипта.
Список параметров
-
encoding
-
encoding
- это имя кодировки, в которую будут преобразовываться входные данные HTTP запроса, из которой будет конвертироваться HTTP вывод, а также это кодировка по умолчанию для всех функций работающих со строками, определенными в модуле mbstring. Обратите внимание, что внутренняя кодировка полностью отличается от кодировки для многобайтных регулярных выражений. You should notice that the internal encoding is totally different from the one for multibyte regex.
Возвращаемые значения
Если аргумент encoding
задан, то Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
В этом случае не меняется кодировка символов для многобайтных регулярных выражений.
Если аргумент encoding
опущен, будет возвращено
имя текущей внутренней кодировки.
Примеры
Пример #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() - Set/Get character encoding for multibyte regex
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Поддержка языков и кодировок
- Многобайтные строки
- mb_check_encoding
- mb_convert_case
- mb_convert_encoding
- mb_convert_kana
- mb_convert_variables
- mb_decode_mimeheader
- mb_decode_numericentity
- mb_detect_encoding
- mb_detect_order
- mb_encode_mimeheader
- mb_encode_numericentity
- mb_encoding_aliases
- mb_ereg_match
- mb_ereg_replace_callback
- mb_ereg_replace
- mb_ereg_search_getpos
- mb_ereg_search_getregs
- mb_ereg_search_init
- mb_ereg_search_pos
- mb_ereg_search_regs
- mb_ereg_search_setpos
- mb_ereg_search
- mb_ereg
- mb_eregi_replace
- mb_eregi
- mb_get_info
- mb_http_input
- mb_http_output
- mb_internal_encoding
- mb_language
- mb_list_encodings
- mb_output_handler
- mb_parse_str
- mb_preferred_mime_name
- mb_regex_encoding
- mb_regex_set_options
- mb_send_mail
- mb_split
- mb_strcut
- mb_strimwidth
- mb_stripos
- mb_stristr
- mb_strlen
- mb_strpos
- mb_strrchr
- mb_strrichr
- mb_strripos
- mb_strrpos
- mb_strstr
- mb_strtolower
- mb_strtoupper
- mb_strwidth
- mb_substitute_character
- mb_substr_count
- mb_substr
Коментарии
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.
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.
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
Note that mb_internal_encoding is not necessary in PHP 5.6
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');
// ------------------------------------------------------------
?>