1

抱歉,如果这已经得到回答。有类似的主题,但我找不到与 Cocoa 和 NSStrings 相关的主题......

我正在构建一个可点击的 URL 以嵌入要通过MFMailComposeViewControlleriPhone 发送的 HTML 电子邮件。我创建了 url,然后stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding用来修饰空白等。然后添加一些周围的 HTML 来获得:

<a href = "http://www.site.com/viewitem?name=Johnny%20Rotten&age=53&mate=sid%20vicious">view</a>

一切都很好,所以它被附加到 emailBody。但是,一旦[mailComposer setMessageBody:emailBody isHTML:YES]所有这些在我的 URL 中&变得&amp;不理想。

我可以控制这个吗?有更好的编码算法吗?我的 HTML 有点生疏,也许我使用了错误的编码?我确定在服务器上我可以将其解析&amp;&但正在寻找 Cocoa 方式...

谢谢!

4

2 回答 2

2

实际上,& 应该始终被编码为&amp;HTML 属性。包括链接。包括表单值分隔符。因此,它完全按照您的意愿完成,即使您不知道自己想要它。

这样看:在你的 URL 中,你有&age=53... 这首先被解释为一个字符实体,只有在这不起作用之后,它才会被解释为一个&符号,然后是更多的字符数据。

W3C 规范对此非常清楚:

作者应使用“ &amp;”(ASCII 十进制 38)而不是“&”以避免与字符引用的开头混淆(实体引用打开分隔符)。作者还应该在属性值中使用“ &amp;”,因为在 CDATA 属性值中允许字符引用。

那应该解决它:使用&amp;not &

于 2010-01-21T08:36:42.963 回答
0

你打电话给 MFMailComposeViewController 的

setMessageBody:isHTML:

你设置isHTML什么?

根据它的设置,很可能 MFMailComposeViewController 正在尝试帮助您对整个邮件正文进行编码......

要么自己不编码正文,要么制作整个正文 HTML。

于 2010-01-21T09:00:20.327 回答