Команда Slack Slash приводит к другой кодировке из приложения iOS или MacOS - PullRequest
0 голосов
/ 23 января 2019

Мы интегрировали команду Slash и обнаружили, что текст, передаваемый команде slash, кодируется по-разному, если он поступает из мобильного приложения (iOS) по сравнению с приложением для настольных компьютеров.

Для команды "/ whereis #xsd" в приложении MacOS Desktop текстовый элемент в теле кодируется как: text=%3C%23C02MKG1LH%7Cxsd%3E

Для команды "/ whereis #xsd" в приложении iOS текстовый элемент в теле кодируется как: text=%26lt%3B%23C02MKG1LH%7Cxsd%26gt%3B

Приложение iOS неверно.

Кто-нибудь еще испытывал это? Любые решения?

(Я отправил этот вопрос Slack, они подтвердили поведение некоторое время назад, но пока не нашли решения).

1 Ответ

0 голосов
/ 23 января 2019

Это не ошибка.Оба являются действительными кодировками HTML.Вы можете убедиться в этом, расшифровав их на этом веб-сайте .

. Разница в том, что строка из IOS также содержит кодировку специальных символов HTML (например, <), но строка рабочего стола делает это.не.Чтобы решить эту проблему, ваше приложение должно сначала выполнить URL-декодирование входной строки, а затем декодировать специальные символы HTML.

В результате получаются следующие результаты:

  • Рабочий стол: <# C02MKG1LH | xsd>
  • IOS: <# C02MKG1LH | xsd>

Вот пример кода, который будет правильно декодировать обе строки в PHP:

<?php

function decodeInputString($input)
{
    return htmlspecialchars_decode(urldecode($input));
}

$desktop = "%3C%23C02MKG1LH%7Cxsd%3E";
$ios = "%26lt%3B%23C02MKG1LH%7Cxsd%26gt%3B";

$desktop_plain = decodeInputString($desktop);
$ios_plain = decodeInputString($ios);

var_dump($desktop_plain);
var_dump($ios_plain);
...