Пишу бота для Телеграм. Серверная часть на 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'ы картинок, ссылки и тд, т.к. там нет русских символов)
Помогло, когда после соединения с бд (mysqli_connect) просто добавил строку:
$db->set_charset("utf8");
Спасибо Bloom за наводку с функцией set_charset. Хотя, я всё ещё не понимаю, почему это решает проблему. Работа с бд ведётся только через phpmyadmin. Файл скрипта в utf-8, сама бд в utf8_general_ci...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста как поставить запрет на копирование текста на сайте(WordPress) ?Или может есть какой то плагин ?