ios - NSURL 不为单字符非 ascii 字符串返回 nil

标签 ios nsurl non-ascii-characters

我一直在使用 NSURL 进行简单的 URL 验证,主要是为了清除非 ascii 特殊字符,我不希望在我的特定应用程序中使用这些字符。我将 URL 作为 NSString 的输入,然后尝试使用 URLWithString 创建 NSURL。如果返回 nil,应用程序会显示一条错误消息。

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

我想知道这是 NSURL 中的错误,还是某种我不理解的漏洞。

我正在使用 Xcode 3.2.5 和 iOS 4.2 SDK。

最佳答案

我无法解释您在上面看到的行为,但是,如果您只想确定 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");
}

关于ios - NSURL 不为单字符非 ascii 字符串返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170240/

相关文章:

ios - 更改状态栏背景颜色颜色过去 iOS 7

ios - 带有本地视频文件的 AVPlayer

ios - webview.URL?.absoluteString 返回 nil

sql-server - SQL 整理语句 where 子句

ios - 分段控件上的 Swift 句柄操作

ios - 从带有披露指示器的 TableView 单元格 xib 转到 Storyboard

ios - 创建大小为 "x"的文件以与 mmap 等一起使用的正确方法

swift - 如何防止 WKWebView 的 “User Agent” header 发生更改?

python-2.7 - 非ASCII字符错误python

excel - 从网站复制 Excel VBA 代码时出现意外的语法错误