Slack斜杠命令导致来自iOS应用程序或MacOS App的不同编码

时间:2019-01-23 15:57:44

标签: ios macos slack slack-api

我们进行了Slash命令集成,发现传递给slash命令的文本的编码方式与桌面应用相比,是来自(iOS)移动应用的。

对于MacOS Desktop应用程序上的命令“ / whereis #xsd”,正文中的文本元素编码为:text=%3C%23C02MKG1LH%7Cxsd%3E

对于iOS应用上的命令“ / whereis #xsd”,正文中的文本元素编码为:text=%26lt%3B%23C02MKG1LH%7Cxsd%26gt%3B

iOS应用程序不正确。

还有其他人遇到过吗?有解决方案吗?

(我已将这个问题发布给Slack,他们已经确认了这一行为,但到目前为止还没有解决的办法。)

1 个答案:

答案 0 :(得分:1)

这不是错误。两者都是有效的HTML编码。您可以通过在website上对其进行解码来验证这一点。

区别在于,来自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);