Roman Busyghin
Committed by Ben Copsey

Encoding detection logic was fixed

@@ -769,8 +769,17 @@ static NSError *ASIUnableToCreateRequestError; @@ -769,8 +769,17 @@ static NSError *ASIUnableToCreateRequestError;
769 NSString *contentType = [[self responseHeaders] objectForKey:@"Content-Type"]; 769 NSString *contentType = [[self responseHeaders] objectForKey:@"Content-Type"];
770 NSStringEncoding encoding = [self defaultResponseEncoding]; 770 NSStringEncoding encoding = [self defaultResponseEncoding];
771 if (contentType) { 771 if (contentType) {
772 - NSArray *parts = [contentType componentsSeparatedByString:@"="]; 772 +
773 - NSString *IANAEncoding = [parts objectAtIndex:[parts count]-1]; 773 + NSString *charsetSeparator = @"charset=";
  774 + NSScanner *charsetScanner = [NSScanner scannerWithString: contentType];
  775 + NSString *IANAEncoding = nil;
  776 +
  777 + if ([charsetScanner scanUpToString: charsetSeparator intoString: NULL])
  778 + {
  779 + [charsetScanner setScanLocation: [charsetScanner scanLocation] + [charsetSeparator length]];
  780 + [charsetScanner scanUpToString: @";" intoString: &IANAEncoding];
  781 + }
  782 +
774 if (IANAEncoding) { 783 if (IANAEncoding) {
775 CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)IANAEncoding); 784 CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)IANAEncoding);
776 if (cfEncoding != kCFStringEncodingInvalidId) { 785 if (cfEncoding != kCFStringEncodingInvalidId) {