如何正确检查是否需要为有效的NSURL编码字符串?

时间:2017-06-23 14:50:42

标签: ios nsstring nsurl

我正在制作网页浏览器,我想添加一个简单的网址修正功能。

用户在UITextField中输入或粘贴文本。

NSString *text = textField.text;

我正在尝试通过两个阶段修复网址:

(1)检查字符串是否需要编码。

BOOL encode = NO;

// Check if the string needs to be encoded.

if (encode) {

    text = [text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
}

(2)检查网址是否有方案。

NSURL *URL = [NSURL URLWithString:text];

if (!URL.scheme) {

    URL = [URL URLWithString:[NSString stringWithFormat:@"http://%@", text]];
}

示例:

如果用户复制&粘贴此网址:

  

http://www.efevresi.gr/τέλος-για-το-μεγαλύτερο-λεωφορείο/

网址应编码为:

  

http://www.efevresi.gr/%CF%84%CE%AD%CE%BB%CE%BF%CF%82-%CE%B3%CE%B9%CE%B1-%CF%84%CE%BF-%CE%BC%CE%B5%CE%B3%CE%B1%CE%BB%CF%8D%CF%84%CE%B5%CF%81%CE%BF-%CE%BB%CE%B5%CF%89%CF%86%CE%BF%CF%81%CE%B5%CE%AF%CE%BF/

但如果用户复制&粘贴编码的URL:

  

http://www.efevresi.gr/%CF%84%CE%AD%CE%BB%CE%BF%CF%82-%CE%B3%CE%B9%CE%B1-%CF%84%CE%BF-%CE%BC%CE%B5%CE%B3%CE%B1%CE%BB%CF%8D%CF%84%CE%B5%CF%81%CE%BF-%CE%BB%CE%B5%CF%89%CF%86%CE%BF%CF%81%CE%B5%CE%AF%CE%BF/

不应重新编码。

有什么建议吗?它已经有了适当的功能吗?你能指出我可以添加到我的项目中的东西吗?

感谢您的时间。

0 个答案:

没有答案