【问题标题】:telegram keyboard not showing non English languages chracters?电报键盘不显示非英语字符?
【发布时间】:2016-07-21 10:30:58
【问题描述】:

我正在尝试用非英语 utf8 语言的波斯语编写一个 php 电报机器人。 当我尝试将波斯语的纯文本发送给我的客户时,它工作得很好

    $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:上面的代码在英文键盘上运行得很好。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,这很有效:-) 但是有没有办法修复和使用我正在使用的特定框架?
    • @SaeidGhafouri,我很高兴它成功了。它表明您的框架无法处理utf-8。由于我们对您的框架一无所知(既不知道名称也不知道它的源代码),所以我们如何为您提供帮助!但是,您现在知道问题出在哪里,您可以就该特定框架及其对utf-8 的支持提出一个新问题,或阅读其文档。我欢迎您作为stackoverflow.com 的新用户,您最好参与选择最佳答案和UPVOTE 或DOWNVOTE 答案或问题(作为会员更好)。
    猜你喜欢
    • 2012-01-02
    • 2010-09-17
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2011-06-20
    • 2019-02-25
    相关资源
    最近更新 更多