检查NSString是否被编码

如何检测已经编码的NSString

我正在编码我的string,如下所示。 编码之前,我只是想validation天气这[product url]已经编码或不。

 NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

你可以尝试解码string,看看原来的string和解码后的string是否相同。 如果它们是相同的,那么它还没有被编码。

 NSString *original = product.url; NSString *decoded = [original stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding]; if ([original isEqualToString:decoded]) { // The URL was not encoded yet NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } else { // The URL was already encoded } 

顺便说一句 – 这些方法从iOS 9开始不推荐使用,所以如果你的应用程序的部署目标是iOS 9.0或更高版本,你应该使用新的方法。

对于iOS 9或更高版本,您应该使用:

 NSString *original = product.url; NSString *decoded = [original stringByRemovingPercentEncoding]; if ([original isEqualToString:decoded]) { // The URL was not encoded yet NSString *encodedUrlString=[[product url] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]; } else { // The URL was already encoded }