Бывает так что в таблице вместо текста в ячейках отображаются знаки вопроса:
Скорей всего не настроено сопоставление в MySQL и при создании новых таблиц они будут созданы в кодировке по-умолчанию.
Посмотрим какое сопоставление в таблице b_xml_tree, для этого в SQL запросе набираем:
SHOW TABLE STATUS WHERE Name LIKE 'b_xml_tree';
Видим что сопоставление latin1_swedish_ci
Сделаем поиск по базе всех таблиц с таким сопоставлением:
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_COLLATION LIKE 'latin1%';
Для того чтобы конвертировать сопоставление, делаем такой запрос:
ALTER TABLE `b_xml_tree` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci
Таблицы теперь с корректным сопоставлением и данные будут записываться верно.
__________________________________________________________________
Если у вас хостинг и вы не можете поменять настройки MySQL, при создании таблицы пользуйтесь запросами вида:
CREATE TABLE table_name(
ID INT(11) NOT NULL,
DESCRIPTION VARCHAR(20) DEFAULT NULL
)
ENGINE = INNODB
CHARACTER SET utf8
COLLATE utf8_unicode_ci;
Если у вас свой сервер, то в файле конфигурации MySQL (/etc/my.cnf или /etc/mysql/my.cnf или ~/.my.cnf) в директиве collation-server пропишите:
collation-server: utf8_unicode_ci
Для MySQL 8.x лучше указывать новое сопоставление utf8mb4_unicode_ci