我正在发送包含文本、数字和数据的帖子。数字和数据工作正常,但我在文本方面遇到问题,因为它可能包含与号 (&)。例如
page.php?text=Hello World & Space.
现在我发现“&”被服务器接收到,但读起来就像一个新变量开始一样。所以它看到(我认为):
text = "Hello World "
Space. =
我确实读过,我可以尝试对文本进行编码,使其看起来像一个 URL(例如“” [空格] 变成“%20”),但没有办法对其进行正确编码。我得出结论:
textToPOST = [text stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
但这不会对&符号进行编码,而是对其他所有内容进行编码。所以结果是:
some text ü blablabla
变成
some%20text%20ü%20blablabla
与 & 未编码。那么我该如何做到这一点,请帮忙。
已经非常感谢了
很遗憾stringByAddingPercentEscapesUsingEncoding
不是大多数人理解的 URL 编码。它会转义 URL 中完全无效的字符,但不会转义 URL 中具有特殊含义的字符。因此它可用于“纠正”无效的用户输入的 URL,但它非常不适合从转义路径和查询字符串组件创建 URL。
(用 JavaScript 术语来说,它类似于encodeURI
而不是你需要的那个far更常见的是encodeURIComponent
.)
因此,为了正确地做到这一点,您将需要另一种方法,无论是您自己的方法还是从现有框架中获取的方法(这是一个非常常见的痛点,因此许多库都有解决方法)。可以使用来实现CFURLCreateStringByAddingPercentEscapes http://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/c/func/CFURLCreateStringByAddingPercentEscapes. See 这个答案 https://stackoverflow.com/questions/917409/encoding-spaces-in-uitextview-uitextfield-to-url-format/4140183#4140183例如代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)