我正在使用stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding。我的应用程序在IOS 6和IOS 7中都运行,与此无关,但问题出在IOS 7。
NSString *strURL = [NSString stringWithFormat:@"%@app1.php?loc=%@", URL, [param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
1. in IOS6 it's encoded like :
http://mydomain/app1.php?loc=Select%20Office%20location
2. in IOS7 it's encoded like :
http://mydomain/app1.php?loc=Select%C2%A0Office%C2%A0location
现在的问题是php服务器接受了。 1编码,是指由IOS6编码。因此,当我的应用程序在IOS7中运行时,php服务器返回零结果,而在IOS6中返回则可以帮助我摆脱这个问题。提前致谢。
最佳答案
URL编码的“%C2%A0”字符串是UTF-8编码的Unicode“不间断空格”。
请参阅Wiki(http://en.wikipedia.org/wiki/Non-breaking_space)。
恕我直言,URL查询中未编码的参数字符串中没有出现Unicode“不间断空格”的情况。
为了检查分别在iOS 6和iOS 7中原始未编码参数字符串是否存在差异,您需要查看字节,例如,使用UTF-8编码从参数字符串创建NSData
对象并记录此NSData
对象到控制台。
在文本编辑器或控制台中,打印NSString
对象的外观可能相同。