(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" : @"中国北京"};
.
Надеюсь на вашу помощь здесь, искренне спасибо.