HTML短信邮件正文。一切都在&符号消失

时间:2013-09-26 08:00:19

标签: android html sms

我目前正在开发一个网络应用程序,这部分代码我必须在短信框中预先填充消息。所以我的代码看起来像这样:

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

在预先填充的消息中,来自&amp;符号向前不会出现在手机的消息框中。我知道我必须编码它,但我不知道编码是什么。对此有何解决方案?感谢。

6 个答案:

答案 0 :(得分:2)

这看起来真的很疯狂,但两次编码身体就可以解决问题了。

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

答案 1 :(得分:1)

Android和iOS对语法的响应略有不同。要将&放在文本正文中,iOS需要URL编码。对于Android,它需要双重编码,如@Crisman的answer中所述。检查以下代码:

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

您也可以尝试此fiddle

答案 2 :(得分:0)

尝试使用&#38;代替“&amp;”因为这是角色的ASCII版本,用于在HTML文档中显示为文本

答案 3 :(得分:0)

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

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

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

wikipedia on percent encoding

答案 4 :(得分:0)

我认为你需要写下面的内容

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

答案 5 :(得分:0)

您尝试过此字符\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>

祝你好运:)