Daniel Åkesson
Daniel Åkesson

Reputation: 1360

NSURLRequest with url containing special characters

I'm having the same problem as: NSURL with special characters

But tried their solution. Can't get my NSURLRequest to work with åöä characters. If the variable "string" contains åöä the request return null. Also tried with NSISOLatin1StringEncoding.

NSString *encodedString = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat: @"http://suggestqueries.google.com/complete/search?output=firefox&q=%@", encodedString];

NSURL *url = [NSURL URLWithString: urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

This works: http://suggestqueries.google.com/complete/search?output=firefox&q=%C3%A5%C3%B6%C3%A4 (åöä)

Any ideas?

EDIT: Using the debugger the NSURL looks correct:

string  __NSCFString *  @"åäö"  0x0a77cd60
encodedString   __NSCFString *  @"%C3%A5%C3%A4%C3%B6"   0x0a77fc40
url NSURL * @"http://suggestqueries.google.com/complete/search?output=firefox&q=%C3%A5%C3%A4%C3%B6" 0x0a79d1f0

Solved: The problem was not the NSURL it was how the return NSDATA was interpreted.

Upvotes: 1

Views: 1401

Answers (1)

Kobi
Kobi

Reputation: 109

Instead of using

NSURL *url = [NSURL URLWithString: urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

try using

NSString *encoded = [urlString stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest* request = [NSURLRequest requestWithURL: [NSURL URLWithString: encoded]];

Upvotes: 2

Related Questions