Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Некоторые символы UFT-8 отображаются знаками вопроса  [new]
Алексей Смирнов
Member

Откуда: г. Челябинск
Сообщений: 682
Добрый день!
В базе данных MySQL строки хранятся в кодировке 'utf8mb4_unicode_ci'. При этом сохраняются любые символы, в том числе и 4-х байтные. Но при выполнении запроса из PHP через библиотеку mysqli 4-байтные символы превращаются в знаки вопроса.

Пробовал вот это:
set names \'utf8\';
set character_set_client=\'utf8mb4_unicode_ci\';
set character_set_results=\'utf8mb4_unicode_ci\';
set collation_connection=\'utf8mb4_unicode_ci\';


Но не помогает.
'set names "utf8mb4_unicode_ci"; - пробовал, ничего не меняется.

Так же пробовал mysqli::set_charset - тоже ничего не дает.

Так же пробовал все поменять на 'utf8mb4' - тоже не помогает.

Библиотеку PDO использовать не очень хочется, т.к. уже весь проект в mysqli.

Как научить PHP читать из базы правильно?
10 фев 19, 07:33    [21805539]     Ответить | Цитировать Сообщить модератору
 Re: Некоторые символы UFT-8 отображаются знаками вопроса  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
В принципе, SET NAMES должно быть достаточно. Только почему utf8 используете, если ожидаете данные utf8mb4? В зависимости от версии используемой СУБД utf8 может и не быть алиасом для utf8mb4 (не так давно было обсуждение, на что реально указывает utf8, но сходу не помню подробностей, смотреть надо).

И, надеюсь, проверили, что шрифт для отображения вывода поддерживает 4-байтовые символы.
10 фев 19, 13:52    [21805640]     Ответить | Цитировать Сообщить модератору
 Re: Некоторые символы UFT-8 отображаются знаками вопроса  [new]
Алексей Смирнов
Member

Откуда: г. Челябинск
Сообщений: 682
vkle, спасибо большое, помогло)

set names 'utf8mb4';

Я пробовал до этого
set names 'utf8mb4_general_ci';
а 'utf8mb4' не догадался.
10 фев 19, 14:24    [21805645]     Ответить | Цитировать Сообщить модератору
 Re: Некоторые символы UFT-8 отображаются знаками вопроса  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
utf8mb4_general_ci - это COLLATION - своего рода, инструкция для СУБД о том, каким образом надлежит сравнивать данные в поле. Например, ci означает игнорировать регистр. К инициализации соединения оно не имеет отношения.
10 фев 19, 21:29    [21805837]     Ответить | Цитировать Сообщить модератору
 Re: Некоторые символы UFT-8 отображаются знаками вопроса  [new]
Алексей Смирнов
Member

Откуда: г. Челябинск
Сообщений: 682
vkle, спасибо!
17 фев 19, 17:32    [21812114]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить