на клавиатуре телеграммы не отображаются символы не на английском языке?

Я пытаюсь написать бот php telegram на персидском языке, который не является английским языком utf8.
когда я пытаюсь отправить клиенту простой текст на персидском языке, все работает нормально

    $array = [
"chat_id" => $chat_id,
"text" => $someNonEnglishText
];
$telegram->sendMessage($array);

но когда я пытаюсь отправить данные клавиатуры с кодом ниже, он просто показывает некоторые знаки вопроса, как ???????????????? на кнопках моей клавиатуры

    $reply_markup = $telegram->replyKeyboardMarkup([
'keyboard' => $someNonEnglishkeyboard,
'resize_keyboard' => true,
'one_time_keyboard' => true
]);
$telegram->sendMessage([
'chat_id' => $updates[0]->getMessage()->getChat()->getId(),
'text' => $something,
'reply_markup' => $reply_markup
]);

Я совершенно уверен, что мой файл php бота utf8, выполнив следующую команду в терминале
файл myfile.php
пока я получил ответ:
surveyBot.php: скрипт PHP, текст в кодировке UTF-8 Unicode

может кто-нибудь помочь?

PS: приведенный выше код прекрасно работает для английской клавиатуры.

0

Решение

Вместо использования конкретной структуры телеграммы, используйте следующий код (только для целей тестирования).
+ Изменить chat_id а также BOT_TOKEN переменные.
Когда этот код запускается, если вы получаете здоровую клавиатуру, то ваша структура имеет проблемы с utf-8. ($ telegram принадлежащий класс в вашем коде)

<?php

$chat_id = 123; //replace with your client chat id
define('BOT_TOKEN','1234:xyz'); //replace with your token

define('BOTAPI','https://api.telegram.org/bot' . BOT_TOKEN .'/');
$reply_markup = [
'keyboard'          => [[['text' => 'سلام'], ['text' => 'خدانگهدار']]],
'resize_keyboard'   => true,
'one_time_keyboard' => true,
];
$data = [
'chat_id'      => $chat_id,
'text'         => 'utf-8 test',
'reply_markup' => json_encode($reply_markup),
];
$ch = curl_init(BOTAPI . 'sendMessage');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]