道歉,如果已经回答了这个问题。有类似的主题,但我没有找到与Cocoa& amp; NSString的...
我正在构建一个可点击的网址,以嵌入要通过iPhone上的MFMailComposeViewController
发送的HTML电子邮件。我创建了网址然后使用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]
&
&
变为&
,我的网址中的&
就不合理了。
谢谢!
答案 0 :(得分:2)
实际上,&amp;应始终在HTML属性中编码为&
。包括链接。包括表单值分隔符。所以它完全符合你的要求,即使你不知道你想要它。
以这种方式看待:在您的网址中,您有&age=53..
。这首先被解释为一个字符实体,只有在它不起作用之后它被解释为一个&符号,后面跟着更多的字符数据。
W3C spec对此很清楚:
作者应使用“
&
”(ASCII十进制38)代替“&amp;”避免与字符引用(实体引用打开分隔符)的开头混淆。作者还应在属性值中使用“&
”,因为CDATA属性值中允许使用字符引用。
应该解决它:使用&
而不是&
。
答案 1 :(得分:0)
您是否正在调用MFMailComposeViewController的
setMessageBody:isHTML:
你将isHTML
设置为什么?
根据它的设置,MFMailComposeViewController可能正在尝试帮助您对整个邮件正文进行编码......
要么自己编码身体,要么整个身体都是HTML。