2017-01-22 15 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. НО В третьем я поставил одно русское слово, и оно тоже сработало.
  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); 
}