(iOS 8.0 +)
我想使用NSURL在查询部分传递一些参数,如下所示:
NSURLComponents *components = [[NSURLComponents alloc] initWithString:@"ft://market/detail"];
NSDictionary *parameters = @{@"username" : @"高高高", @"from" : @"中国北京"};
NSMutableArray *items = [[NSMutableArray alloc] init];
for (NSString *key in parameters.allKeys) {
[items addObject:[[NSURLQueryItem alloc] initWithName:key value:parameters[key]]];
}
components.queryItems = items;
NSURL *url = components.URL;
NSLog(@"url : %@", url);
然而,当我收到URL
并解析它时,我发现在query
部分传递的中文字符是异常的,我使用NSURLComponents
来解析这样的URL :
NSURLComponents *anaComponents = [NSURLComponents componentsWithString:url.absoluteString];
NSMutableDictionary *queryParams = [[NSMutableDictionary alloc] init];
for (NSURLQueryItem *querItem in anaComponents.queryItems) {
[queryParams setObject:querItem.value forKey:querItem.name];
}
NSLog(@"queryParams : %@", queryParams);
以下是调试日志:
url : ft://market/detail?username=%E9%AB%98%E9%AB%98%E9%AB%98&from=%E4%B8%AD%E5%9B%BD%E5%8C%97%E4%BA%AC
queryParams : {
from = "\U4e2d\U56fd\U5317\U4eac";
username = "\U9ad8\U9ad8\U9ad8";
}
现在的问题似乎是汉字等字符的编码和解码存在问题,即使使用[parameters[key] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]
方法对查询值进行编码,解码时仍然是错误的。
我要解析的查询部分如下:@{@"username" : @"高高高", @"from" : @"中国北京"};
。
希望你的帮助,真诚的谢谢。