Кодировка кириллических символов в Telegram

Лаврентий Палыч

Ребят, нужна помощь, кодировка пакетов Update возвращаемых в Telegram (Bot API) кодирована в UTF-8 с BOM'ом из за чего символы на русском языке отображаются адской кваказяброй а значения не пишутся в таблицу БД. Стандартные mb функции конверта utf to cp1251 (переводит) и обратно не помогли.

$message = $update['message']['text']; //уходить в обработчик ответов -    работает
$txt_msg = $message; // уходить в DB - не работает
$message_id = $update['message']['message_id'];
$message_name = $update['message']['chat']['first_name'];
//CREATE to DB RedBeanPHP
$user_messages = R::dispense('usermessages');
$user_messages->chat_id = $chat_id;
$user_messages->message_id = $message_id;
$user_messages->message_txt = $txt_msg;
$id = R::store($user_messages);

mb_convert remote BOM не помогли

2 ответа

Лаврентий Палыч

Проблема была в кодировке на Heroku. При на другом хосте все отлично заработало "без костылей". В общем - Если столкнетесь с абракадаброй получая update пакеты от телеграм проверьте кодировку Вашего проекта; кодировку используемую на хосте


Лаврентий Палыч

Попробуй вызвать в начале скрипта

mb_internal_encoding("UTF-8");

а потом конвертировать

mb_convert_encoding([строка], "UTF-8", "cp1251");

licensed under cc by-sa 3.0 with attribution.