电报键盘没有显示非英语语言字符?

时间:2016-07-21 10:30:58

标签: php utf-8 keyboard telegram-bot non-english

我试图用波斯语编写一个php电报机器人,这是一种非英语的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
]);

通过在终端中运行以下命令,我完全确定我的bot php文件是utf8 文件myfile.php 我得到了答案: surveyBot.php:PHP脚本,UTF-8 Unicode文本

有人可以帮忙吗?

ps:上面的代码适用于英文键盘。

1 个答案:

答案 0 :(得分:0)

使用以下代码(仅用于测试目的),而不是使用特定的电报框架。 更改chat_idBOT_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);