我们进行了Slash命令集成,发现传递给slash命令的文本的编码方式与桌面应用相比,是来自(iOS)移动应用的。
对于MacOS Desktop应用程序上的命令“ / whereis #xsd”,正文中的文本元素编码为:text=%3C%23C02MKG1LH%7Cxsd%3E
对于iOS应用上的命令“ / whereis #xsd”,正文中的文本元素编码为:text=%26lt%3B%23C02MKG1LH%7Cxsd%26gt%3B
iOS应用程序不正确。
还有其他人遇到过吗?有解决方案吗?
(我已将这个问题发布给Slack,他们已经确认了这一行为,但到目前为止还没有解决的办法。)
答案 0 :(得分:1)
这不是错误。两者都是有效的HTML编码。您可以通过在website上对其进行解码来验证这一点。
区别在于,来自IOS的字符串还包含HTML特殊字符的编码(例如<
),而桌面字符串则没有。为了解决这个问题,您的应用必须首先对输入字符串进行URL解码,然后再对特殊的HTML字符进行解码。
结果是:
这是一个示例代码,可以在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);