Пересылка Twilio SMS с Emojis с использованием PHP

У меня есть сценарий PHP, который вызывается через веб-перехватчик Twilio для входящих SMS. Сообщения приходят с данными публикации, которые я записываю с помощью:

$Message = $_POST["Body"];

Затем, используя Twilio PHP SDK, это сообщение пересылается обратно на мобильный телефон через:

$relay = new Client($sid, $token);
try {
    $relay->messages->create(
        '+15558675310',
        array(
            'from' => '+15555555555',
            'body' => $Message
        )
    );
}
catch (Exception $e) {
    $TwilioError = "Error: " . $e->getMessage();
}

Достаточно просто и отлично работает. Проблема в том, что смайлы не переводятся должным образом и отправляются в искаженном виде. Смайлик должен выглядеть следующим образом: 😠€

В журналах Twilio входящее сообщение будет отображаться со смайликом, но это всего лишь HTML-представление. Журнал не показывает, какая кодировка (при условии UTF-8). В журнале Twilio исходящего сообщения указано, что используется кодировка UCS2.

Кодировка веб-сервера по умолчанию - UTF-8.

Что нужно сделать, используя PHP 5.6, с сообщением, поступающим от Twilio с возможными смайликами в содержимом, перед отправкой обратно через Twilio PHP SDK?

Проповедник разработчиков Twilio здесь. Для информации: все операции между вашим приложением и Twilio должны выполняться в UTF-8. UCS2 - это кодировка, которую Twilio использует для отправки сообщения в телефонную сеть, но Twilio переводит ее в UTF-8 и обратно, чтобы упростить работу. Когда вы говорите, что кодировка веб-сервера по умолчанию - UTF-8, где это установлено? Можете ли вы из своего PHP-приложения напечатать символ эмодзи в журнале или на странице вывода?

philnash 20.12.2018 00:04

php.ini: default_charset = "UTF-8" Также: заголовок ("Content-Type: text / html; charset = " utf-8 ");

Data Do IT 20.12.2018 20:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
809
1

Ответы 1

Решено. Частично моя проблема заключалась в вызове stripslashes () в $ _REQUEST ['Body'], вероятно, по привычке для помощи в других гнусных значениях поста. Таким образом, он удалял байты эмодзи UTF-8.

Как только это было удалено, я смог отправить смайлик. Для хранения эмодзи для целей регистрации использование функции сущностей, предоставляемой @PetrHejda ниже, работает безупречно.

htmlentites не работает для смайликов

Другие вопросы по теме