2017-01-22 21 views
1

私はメッセージで私に返信する電信のための簡単なPHPボットを作った。 コード:Telegram Botでロシア語のシンボルでメッセージを送信できません

<?php 
set_time_limit(0); 

function SendMessage($message){ 
    global $website, $chatId; 
    file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$message); 
} 

$botToken = "my token"; 
$website = "https://api.telegram.org/bot".$botToken; 

$content = file_get_contents("php://input"); 
$update = json_decode($content, TRUE); 
$message = $update["message"]; 

$chatId = $message["chat"]["id"]; 
$text = $message["text"]; 

if ($text == "/start") { 
    SendMessage("welcome, it's nice to meet you"); 
} else { 
    SendMessage("сори"); 
} 

、すべてが大丈夫だったが、いくつかの点で私のボットは動作を停止しました。私は動作するすべてを削除してデバッグを開始しました。そして私は興味深い結果を見つけました。

  1. 私の最初の試みでは、ボットは何も送信しませんでした。メッセージにはロシア語と英語の両方の記号が付いています。
  2. 私はロシアのシンボルを削除し、それは働いた。
  3. しかし、私はロシア語を1つ置き、それも働いた。
  4. 最初の試しボットからの正確な単語を使用したときのBUTx2は何もしませんでした。

images of results to make it clear

ことが可能であるか私に説明してください。そしてそれを解決する方法。

更新。私のスクリプトはUTF-8でエンコードされています

+1

あなたのスクリプトのエンコーディングは? –

+0

エンコーディングはUTF-8 –

+1

PHP Unicodeサポートへようこそ – SeinopSys

答えて

1

ありがとうございます。 URLを正しくエンコードして解決しました。私はちょうどurlencode関数を追加しました:

function SendMessage($message){ 
    global $website, $chatId; 

    $message = urlencode($message); 

    file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$message); 
} 
関連する問題