Mb get info: примеры (PHP)
mb_get_info(string $type = "all"): array|string|int|falseФункция mb_get_info возвращает информацию о текущих настройках модуля многобайтовых строк (mbstring). Она применяется для отладки и проверки конфигурации, связанной с обработкой текста в различных кодировках, таких как UTF-8. Это позволяет убедиться в корректности настроек перед выполнением операций с многобайтовыми строками.
Функция принимает один необязательный параметр type.
- type (string) – определяет тип возвращаемой информации. Если аргумент не указан, возвращается массив всех доступных настроек. Возможные значения:
- "internal_encoding" – внутренняя кодировка скрипта.
- "http_input" – кодировка HTTP-ввода.
- "http_output" – кодировка HTTP-вывода.
- "http_output_conv_mimetypes" – MIME-типы для преобразования HTTP-вывода.
- "mail_charset" – кодировка для функций почты.
- "mail_header_encoding" – кодировка заголовков почты.
- "mail_body_encoding" – кодировка тела почты.
- "illegal_chars" – недопустимые символы.
- "encoding_translation" – включено ли преобразование кодировки.
- "language" – язык модуля mbstring.
- "detect_order" – порядок определения кодировки.
- "substitute_character" – символ подстановки.
- "strict_detection" – строгое определение кодировки.
- "all" – возврат всех настроек в виде массива (значение по умолчанию).
Пример получения всех настроек модуля mbstring.
<?php
print_r(mb_get_info());
?>Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[http_output_conv_mimetypes] => ^(text/|application/xhtml\+xml)
[mail_charset] => UTF-8
[mail_header_encoding] => BASE64
[mail_body_encoding] => BASE64
[illegal_chars] => 0
[encoding_translation] => Off
[language] => neutral
[detect_order] => Array
(
[0] => ASCII
[1] => UTF-8
)
[substitute_character] => 0
[strict_detection] => Off
)Пример получения конкретной настройки, например, внутренней кодировки.
<?php
echo mb_get_info('internal_encoding');
?>UTF-8
Пример проверки порядка определения кодировки.
<?php
print_r(mb_get_info('detect_order'));
?>Array
(
[0] => ASCII
[1] => UTF-8
)В PHP существуют другие функции для работы с настройками многобайтовых строк.
- mb_internal_encoding() – получает или устанавливает внутреннюю кодировку скрипта. Предпочтительнее для установки кодировки.
- mb_http_input() – определяет кодировку HTTP-ввода. Используется для проверки кодировки входящих данных.
- mb_http_output() – получает или устанавливает кодировку HTTP-вывода. Применяется для управления выводом.
- mb_detect_order() – устанавливает или получает порядок определения кодировки. Удобна для настройки детектирования.
Функция mb_get_info предоставляет более общую информацию, в то время как другие функции сфокусированы на конкретных аспектах.
Ошибки часто возникают из-за неверного использования параметров функции.
Пример передачи несуществующего ключа.
<?php
var_dump(mb_get_info('unknown_key'));
?>bool(false)
Ошибки могут появляться при попытке изменить настройки через mb_get_info, что невозможно, так как функция только возвращает данные.
<?php
// Неправильно: функция не устанавливает настройки
$info = mb_get_info('internal_encoding');
$info = 'ISO-8859-1'; // Это не изменит реальную настройку
echo mb_internal_encoding(); // Осталось прежнее значение
?>UTF-8
В PHP 8 функция mb_get_info не претерпела значительных изменений. Однако в ранних версиях, таких как PHP 7, могли добавляться новые ключи для параметра type. В PHP 8.1 были улучшения модуля mbstring, но сама функция осталась стабильной. Рекомендуется проверять документацию для конкретных версий.
Пример использования mb_get_info для отладки настроек перед обработкой строк.
<?php
// Проверка настроек перед операцией
$info = mb_get_info();
if ($info['internal_encoding'] !== 'UTF-8') {
mb_internal_encoding('UTF-8');
echo 'Кодировка изменена на UTF-8';
} else {
echo 'Кодировка уже UTF-8';
}
?>Кодировка уже UTF-8
Пример получения информации о подстановочном символе.
<?php
$substitute = mb_get_info('substitute_character');
echo 'Текущий символ подстановки: ' . $substitute;
?>Текущий символ подстановки: 0
Пример анализа порядка определения кодировки для использования в mb_detect_encoding.
<?php
$order = mb_get_info('detect_order');
$text = 'Пример текста';
$encoding = mb_detect_encoding($text, $order);
echo 'Определенная кодировка: ' . $encoding;
?>Определенная кодировка: UTF-8
Пример проверки, включено ли преобразование кодировки.
<?php
$translation = mb_get_info('encoding_translation');
echo 'Преобразование кодировки: ' . $translation;
?>Преобразование кодировки: Off
В других языках программирования также есть инструменты для получения информации о кодировках.
Mb get info в Python
В Python модуль sys или locale позволяет получать данные о кодировках.
import sys
print(sys.getdefaultencoding())utf-8
Mb get info в Javascript
В JavaScript информация о кодировках обычно связана с текстовыми декодерами/кодерами, но нет прямой аналогии.
console.log('Пример: декодер текста');
const decoder = new TextDecoder('utf-8');
console.log(decoder.encoding);utf-8
Mb get info в MySQL
В MySQL можно проверить кодировки через системные переменные.
SHOW VARIABLES LIKE 'character_set%';+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | +--------------------------+----------------------------+