2012-02-07 98 views
0

我一直在使用NSURL做一个简单的URL验证,主要是为了清除非ASCII字符,我不想在我的特定应用程序中使用。我将一个URL作为输入到NSString中,然后尝试使用URLWithString创建一个NSURL。如果返回nil,则应用程序会显示一条错误消息。NSURL不返回零的单字符非ASCII字符串

例如,如果我输入“あか”作为输入(即两个日文字符),则NSURL为零。这一直按预期工作。不过,我最近注意到,输入的字符串只包含一个非ASCII字符,NSURL对其进行处理并返回一个URL编码值。所以如果我输入“あ”作为输入,结果NSURL不是零。 absoluteString值为“%E3%81%82”。

我想知道这是否是NSURL中的错误,或者是我不了解的某种漏洞。

我使用Xcode 3.2.5和iOS 4.2 SDK。

+0

你能告诉我们一些你在做什么的实际代码吗? – 2013-04-09 15:01:39

回答

3

我无法解释的行为,你在上面看到的,但是,如果你正在试图做的是确定一个URL字符串是否包含任何非ASCII字符,你可以用下面的代码实现这一点:

NSString *testURLString = @"http://www.googleあか.com"; 

NSCharacterSet* ascii = [NSCharacterSet characterSetWithRange: NSMakeRange(0, 128)]; 
NSCharacterSet* nonAscii = [ascii invertedSet]; 

if ([testURLString rangeOfCharacterFromSet:nonAscii].location != NSNotFound) { 
    NSLog(@"This string contains non-ASCII characters"); 
} 
+0

感谢您的提示。它的工作原理,我可能不会想到,因为我对iOS开发很新。 – mayonaise 2012-02-07 23:40:18