含%20的Query String导致Twitter分享URL被截断,寻求解决方案
解决Twitter Intent链接含%20时URL被截断的问题
我之前处理过类似的Twitter分享链接问题,你的情况本质是嵌套URL参数没有被正确编码,导致Twitter的解析器误把里面的%20当成了外层链接的参数分隔符,提前截断了url参数的内容。
下面是两种可靠的解决办法:
对目标URL进行完整的URL编码(推荐)
你需要把要分享的整个目标URL(包括它自己的Query String)做一次完整的URL编码,而不是只单独转义空格。比如你原本的目标URL:49.248.29.163/planPage?Title=Religare Invesco AGILE Fund&classification=equity编码后会变成:
49.248.29.163%2FplanPage%3FTitle%3DReligare%20Invesco%20AGILE%20Fund%26classification%3Dequity把这个编码后的字符串放到Twitter Intent的
url参数里,同时确保text参数里的特殊字符(比如@)也做转义,最终的链接应该是这样的:https://twitter.com/intent/tweet?url=49.248.29.163%2FplanPage%3FTitle%3DReligare%20Invesco%20AGILE%20Fund%26classification%3Dequity&text=Check%20this%20via%20%40ReligareInvesco这样Twitter就能正确识别整个
url参数的内容,不会再截断。临时替代:用
+代替%20表示空格
如果你不想做完整编码,可以尝试把目标URL里的%20替换成+,有些情况下Twitter的解析器不会误判,但这个方法兼容性不如完整编码,只适合快速测试场景。
问题根源补充
Twitter的Intent链接解析逻辑比较严格,当嵌套的URL里存在未正确编码的特殊字符(比如%20、&)时,它会把这些字符当成外层链接的参数分隔符或终止标记,导致url参数被提前截断,只解析到第一个特殊字符之前的内容。
内容的提问来源于stack exchange,提问作者Danijel
相关产品推荐
相关产品推荐

