我目前正在开发一个网络应用程序,并且在这部分代码中,我必须在短信框中预先填充消息。所以我的代码如下所示:
<a href="sms:?body=This is the message with & symbol">SMS</a>
在预先填充的消息中,从 & 符号开始的所有内容都不会出现在手机的消息框中。我知道我必须对其进行编码,但我不知道编码代码是什么。有什么解决办法吗?谢谢。
这看起来真的很疯狂,但是对身体进行两次编码就可以了。
<a href="sms:?body=hello & stuff">not encoded (doesn't work)</a>
<a href="sms:?body=hello%20%26%20stuff">uri component encoded (doesn't work)</a>
<a href="sms:?body=hello%2520%2526%2520stuff">double uri component encoded (works fine)</a>
从 android 设备测试的工作小提琴:https ://jsfiddle.net/k96g2h48/
Android 和 iOS 对语法的响应略有不同。要放入&
文本正文,iOS 需要 URL 编码。对于 Android,它需要@Crisman 的回答中提到的双重编码。检查以下代码:
<a href="sms:&body=hi%26bye">iOS</a>
<br>
<a href="sms:?body=hello%2520%2526%2520stuff">double uri component encoded (works fine)</a>
第一个链接适用于 iOS,第二个链接适用于 Android。注意两个 URL 的语法。&
并且?
他们与&
ios 区分数字和正文部分,而?
用于分隔数字和正文。
一个带有数字的例子就像
<a href="sms:123456&body=hi%26bye">iOS</a>
<br>
<a href="sms:123456?body=hello%2520%2526%2520stuff">double uri component encoded (works fine)</a>
你也可以试试这个小提琴
编码您的 & 字符,因为它在 URL 中具有特殊含义(它是字段的分隔符)
<a href="sms:?body=This+is+the+message+with+%26+symbol">SMS</a>
如果您只想要文本表示,则 URL 中具有特殊含义的字符需要是 ecnode。
尝试使用&
而不是“&”,因为这是字符的 ASCII 版本,用于在 HTML 文档中显示为文本
我认为你需要像下面这样写
<a href="sms:?body=This is the message with & symbol">SMS</a>
你试过这个 char\u0026
吗?
<a href="sms:?body=This is the message with \u0026 symbol">SMS</a>
参考来自 - https://stackoverflow.com/a/3705601/10989990
编辑
有些浏览器会接受&
,有些浏览器不会接受这个字符,所以后面的所有内容都&
将被视为查询参数
编辑
可能是 javascript 有助于使用
<!DOCTYPE html>
<html>
<body>
<script>
var txt = "SMS";
document.write("<p>" + txt.link("sms:?body=This is the message with & symbol") + "</p>");
</script>
</body>
</html>
祝你好运 :)