2009-11-10 35 views
0

如您所知,URL中的加号会转换为空格字符。 [NSURL路径]返回一个路径,用相应的字符替换所有的%xx。 但它不会将'+'翻译成一个空格!它将其留作加号。 这是一个错误还是什么? 如何使用NSURL处理包含编码为加号的空格的URL?NSURL路径不能理解URL中的加号

感谢

+0

此URL在短信中发送到我的应用程序。我点击短信,我的应用程序启动,应用程序:HandleOpenURL方法被调用。 – CITBL 2009-11-10 14:40:59

回答

0

作为RFC 2396(统一资源标识符)规定

许多URI包括部件 由其组成或由某些 特殊字符分隔。这些字符 被称为“保留”,因为它们在URI组件中的使用 是 限于其保留目的。 如果某个URI组件的数据与保留的 目的发生冲突,则冲突数据 必须在形成 URI之前转义。

reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | 
       "$" | "," 

所以,我认为你必须申请NSURL之前逃脱你的URL字符串的加号。

+0

转义加号完全可以保留加号。提问者希望将其视为等同于空间。 – 2009-11-10 13:34:13

2

+和空格之间的任何等价都发生在服务器上,而不是客户端上。如果您想在客户端程序中将加号转换为空格(我假设您有一个理由),您必须自己动手,之前正在解决%xx转义。

而且你会在NSString端做到这一点,而不是NSURL端。

0

问:这是一个错误还是什么?

答:不是,它是一个功能,如果它被翻译为空格,将会是一个错误,因为加号被保留为被解释为服务器端上的空间。

问:如何使用NSURL处理包含编码为加号的空格的URL? A:让他们保持原样。服务器将完成剩下的工作。