@Apostol63

Как отправить кириллицу в чат бот telegram?

Всем доброго времени суток

Столкнулся со следующей проблемой. Через curl отправляю POST запрос на отправку сообщения в телеграм бот.
Латиница отправляется без каких либо проблем.
При попытке отправить кириллицу получаю ошибку
"{"ok":false,"error_code":400,"description":"Bad Request: strings must be encoded in UTF-8"}"

Если кодирую через utf8_encode текст сообщения, то в чат бот отправляется абракадабра.
Что необходимо сделать, чтобы полечить эту проблему? Заранее спасибо

Вот код
$url = 'https://api.telegram.org/bot'.$this->botToken.'/sendMessage?chat_id='.$this->chatId.'&text='.$message;
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-type: text/xml;charset=\"utf-8\"",]);
        $result = curl_exec($ch);
        curl_close($ch);
  • Вопрос задан
  • 2967 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
А что обычно делают со строками, передаваемыми через гет?
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Для корректной передачи GET-параметров Вы должны использовать кодировку application/x-www-form-urlencoded. В языке PHP для получения строки нужного формата можно использовать функцию http_build_query(). Показать пример или сами справитесь?

P. S. Кстати, вы передаете неправильный заголовок: text/xml. Сам запрос у вас тоже неправильный, вы пытайтесь сделать POST-запрос в то время как передаете данные в виде GET-строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы