2012-02-07 64 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