2016-07-21 27 views
0

Ich versuche, ein PHP-Telegramm-Bot in Persisch zu schreiben, die eine nicht englische utf8 Sprache ist. wenn ich versuche, es Klartext in persischen meinen Klienten zu senden funktioniert perfekt okTelegramm-Tastatur zeigt nicht englische Sprachen chracters?

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

aber wenn ich versuche nur zeigen, wie einige Fragezeichen darunter Tastaturdaten mit dem Code zu senden ??????? ????????? auf meiner Tastatur Tasten

$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 
]); 

ein bin ich ganz sicher, dass meine bot PHP-Datei UTF-8 ist den folgenden Befehl in Terminal Datei myfile.php indem Sie whilch ich die Antwort bekam: surveyBot.php: PHP-Skript , UTF-8 Unicode-Text

kann jemand helfen?

ps: der obige Code funktioniert perfekt für englische Tastatur.

Antwort

0

Anstelle eines spezifischen Telegramm-Frameworks den folgenden Code verwenden (nur zu Testzwecken). Ändern Sie chat_id und BOT_TOKEN Variablen. Wenn dieser Code ausgeführt wird, wenn Sie gesund Tastatur erhalten dann hat Ihre Framework Problem mit utf-8. (Telegramm $ im Code gehörende Klasse)

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

vielen Dank, dass :-) gearbeitet, aber ist es eine Möglichkeit, zu beheben und verwende das spezifische Framework, das ich verwende? –

+0

@ SaeidGhafouri, Ich bin froh, dass es funktioniert hat. Es zeigt, dass Ihr Framework nicht mit utf-8 umgehen kann. Da wir nichts über Ihr Framework wissen (weder Name noch Quellcode), wie können wir Ihnen helfen? Aber da Sie jetzt wissen, wo das Problem ist, können Sie eine neue Frage zu diesem spezifischen Rahmen und dessen Unterstützung für utf-8 stellen oder seine Dokumentation lesen. Ich begrüße Sie als neuen Benutzer von 'stackoverflow.com' und es ist besser, dass Sie an SELECTING BEST ANSWER und UPVOTE oder DOWNVOTE Antworten oder Fragen teilnehmen (um es als Mitglied besser zu machen). –