Не выводятся русские символы из базы MySql в Telegram bot

123
20 ноября 2021, 19:40

Пишу бота для Телеграм. Серверная часть на PHP + MySql. По команде в телеге из базы MySql должна доставаться информация. Из базы отлично достаётся всё, кроме полей с русскими символами. Подскажите, пожалуйста, в чём может быть проблема?

Упрощённый вариант функции:

$bot->command('show', function ($message) use ($bot) {
$afisha_show = $db->query("SELECT name FROM afisha");
$answer = '';
while ($afisha = $afisha_show->fetch_assoc()) {
    //$answer = mb_detect_encoding($afisha['name']); - выводит UTF-8
    //$answer = iconv('windows-1251', 'utf-8', $afisha['name']); - не помогает
    //$answer = iconv('utf-8', 'windows-1251', $afisha['name']); - не помогает
    $answer = $afisha['name']; //ничего не выводит, если в поле name есть русские символы. Если в поле нет русских символов, то выводит то, что нужно
    //$answer = gettype($answer); - во всех случаях выводит string. То есть даже, если не отображает значения с русскими символами, всё равно gettype выводит string
}
$bot->sendMessage($message->getChat()->getId(), $answer);
});

Файл со скриптами в utf-8 без BOOM. Кодировка БД - utf8_general_ci. Другие поля из бд выводит нормально (id, url'ы картинок, ссылки и тд, т.к. там нет русских символов)

Answer 1

Помогло, когда после соединения с бд (mysqli_connect) просто добавил строку:

$db->set_charset("utf8");

Спасибо Bloom за наводку с функцией set_charset. Хотя, я всё ещё не понимаю, почему это решает проблему. Работа с бд ведётся только через phpmyadmin. Файл скрипта в utf-8, сама бд в utf8_general_ci...

READ ALSO
public function get_word() : string

public function get_word() : string

Что означает конструкция вида

104
variable might not have been defined

variable might not have been defined

Есть следующий код:

94
Как запретить копирование текста с сайта WordPress?

Как запретить копирование текста с сайта WordPress?

Подскажите пожалуйста как поставить запрет на копирование текста на сайте(WordPress) ?Или может есть какой то плагин ?

170