IOS 中文GBK UTF-8转换

 GBK ---> UTF8

NSString *pageSource = [[NSString alloc] initWithData:pageData encoding:NSUTF8StringEncoding];

gbk(或者gb2312)---->UTF8

NSStringEncoding gbkEncoding = 
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *pageSource = [[NSString alloc] initWithData:pageData encoding:gbkEncoding];


注:此方法不能用于AFNetWorking 传参。AF默认用的中文编码格式是UTF8格式。如遇到这种情况则用以下形式传参:
+(void)PostHanZi:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void (^)(id json))success failure:(void (^)(NSError *error))failure
{
    NSLog(@"URLString: %@, parameters: %@", URLString, parameters);
    NSString *paras = [self DictionaryToCustomString:parameters];
    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URLString]];
    [urlRequest setHTTPMethod: @"POST"];
    [urlRequest setHTTPBody:[paras dataUsingEncoding:enc]];
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        dispatch_async(dispatch_get_main_queue(),
        ^{
        if (success) {
            id JsonDate = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            success(JsonDate);
            
        } else {
                   failure(error);
                }
        });
    }];
    [task resume];
}

 

posted @ 2016-05-09 16:15  niwanglong385  阅读(805)  评论(0)    收藏  举报