Ios NSURLComponents中的URL查询项为nill
我正在创建一个Ios NSURLComponents中的URL查询项为nill,ios,objective-c,Ios,Objective C,我正在创建一个NSURLURL,它将包含一些转义字符(日语) //url是mbos.help.jp%2Fsearch%3Fq=%E5%B0%82%E9%96%80&pg=1 当我创建NSURLComponents并尝试获取查询项时,它给了我零 NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url resolvin
NSURL
URL,它将包含一些转义字符(日语)
//url是mbos.help.jp%2Fsearch%3Fq=%E5%B0%82%E9%96%80&pg=1
当我创建NSURLComponents
并尝试获取查询项时,它给了我零
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:YES];
NSArray *queryItems = urlComponents.queryItems;
//这里是queryItems的问题
如果任何人有解决方案来获取查询项,请提供帮助。提前感谢至少一个字符専門 您在搜索字符串中使用的无效Unicode格式为未配对UTF-16代理字符,因此不能通过
string编码,方法是添加PercentEncoding with AllowedCharacters:
,因此返回nil
您可以在中找到一个示例。
显然,如果可以进行编码,您必须检查日语字符。
我必须说,我也没想到 至少一个字符専門 您在搜索字符串中使用的无效Unicode格式为未配对UTF-16代理字符,因此不能通过
string编码,方法是添加PercentEncoding with AllowedCharacters:
,因此返回nil
您可以在中找到一个示例。
显然,如果可以进行编码,您必须检查日语字符。
我必须说,我也没想到 问题不在于Unicode字符,每当您添加编码时,请为我的案例使用适当的字符集。我使用的是以下集合
URLHostAllowedCharacterSet
,这意味着您的NSURLComponents
仅为主机提供编码,要获得正确的queryItems
请像这样使用URLQueryAllowedCharacterSet
NSString* currentlocationbarString = @"mbos.help.jp/search?q=専門&pg=1"
NSString *escapedString = [currentlocationbarString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL* url = [NSURL URLWithString:escapedString];
现在你可以得到查询项了
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:YES];
NSArray *queryItems = urlComponents.queryItems;
问题不在于Unicode字符,每当您添加编码时,请针对我的情况使用适当的字符集。我使用的是以下集合
URLHostAllowedCharacterSet
,这意味着您的NSURLComponents
仅为主机提供编码,以获得正确的queryItems
使用URLQueryAllowedCharacterSet
NSString* currentlocationbarString = @"mbos.help.jp/search?q=専門&pg=1"
NSString *escapedString = [currentlocationbarString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL* url = [NSURL URLWithString:escapedString];
现在你可以得到查询项了
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:YES];
NSArray *queryItems = urlComponents.queryItems;
字符是有效的,可能您可以尝试使用其他字符。我没有说字符是无效的Unicode,我说它没有成对的UTF-16字符。在这种情况下,编码是不可能的。请查收。它说U+10FFFF是UTF-16可编码的最高代码点,也是Unicode字符集6.0的最高代码点。{U+DBFF,U+DFFF}代理项对是最后一个可用的对。字符有效,可能您可以尝试使用其他字符。我没有说字符是无效的Unicode,我说它没有成对的UTF-16字符。在这种情况下,编码是不可能的。请查收。它说U+10FFFF是UTF-16可编码的最高代码点,也是Unicode字符集6.0的最高代码点。{U+DBFF,U+DFFF}代理项对是最后一个可用的对。