7

我目前正在开发一个网络应用程序,并且在这部分代码中,我必须在短信框中预先填充消息。所以我的代码如下所示:

    <a href="sms:?body=This is the message with & symbol">SMS</a>

在预先填充的消息中,从 & 符号开始的所有内容都不会出现在手机的消息框中。我知道我必须对其进行编码,但我不知道编码代码是什么。有什么解决办法吗?谢谢。

4

6 回答 6

5

这看起来真的很疯狂,但是对身体进行两次编码就可以了。

<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/

于 2017-04-17T16:37:07.670 回答
4

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>

你也可以试试这个小提琴

于 2019-08-14T06:35:00.353 回答
1

编码您的 & 字符,因为它在 URL 中具有特殊含义(它是字段的分隔符)

<a href="sms:?body=This+is+the+message+with+%26+symbol">SMS</a>

如果您只想要文本表示,则 URL 中具有特殊含义的字符需要是 ecnode。

关于百分比编码的维基百科

于 2013-09-26T08:04:19.160 回答
0

尝试使用&#38;而不是“&”,因为这是字符的 ASCII 版本,用于在 HTML 文档中显示为文本

于 2013-09-26T08:03:53.547 回答
0

我认为你需要像下面这样写

  <a href="sms:?body=This is the message with &amp; symbol">SMS</a>
于 2013-09-26T09:37:30.130 回答
0

你试过这个 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>

祝你好运 :)

于 2019-08-08T07:15:34.517 回答