2016-07-21 5 views
0

Я пытаюсь написать бот 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 whilch я получил ответ: surveyBot.php: PHP скрипт , UTF-8 Unicode text

может кто-то помочь?

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

ответ

0

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

<?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

спасибо большое, что работал :-), но есть способ исправить и использовать конкретную структуру, которую я использую? –

+0

@SaeidGhafouri, я рад, что он сработал. Это показывает, что ваша инфраструктура не может обрабатывать 'utf-8'. Поскольку мы ничего не знаем о вашей структуре (ни имя, ни исходный код), так как мы можем вам помочь! Но, как вы знаете, где сейчас проблема, вы можете задать новый вопрос об этой конкретной структуре и ее поддержке «utf-8» или прочитать ее документацию. Я приветствую вас как нового пользователя 'stackoverflow.com', и лучше, если вы участвуете в ответах SELECT BEST ANSWER, UPVOTE или DOWNVOTE или вопросов (чтобы сделать его лучше как член). –