0

I have problem with UTF-8 symbols. I send data from PHP server to my app.

PHP code:

$json = json_encode ($array, JSON_UNESCAPED_UNICODE); echo $json; 

Objective C code:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSString *response = [[NSString alloc] initWithData:_mutableData encoding:NSUTF8StringEncoding]; NSLog(@"%@", response); NSError * error=nil; NSDictionary * parsedData = [NSJSONSerialization JSONObjectWithData:_mutableData options:kNilOptions error:&error]; NSLog(@"%@", parsedData); } 

Objective C code will output:

{"name":"1sФ 女"} 

And for second NSLog:

{ name = "1s\U0424 \U5973"; } 

If I remove JSON_UNESCAPED_UNICODE option from PHP code I get this output:

{"name":"1s\u0424 \u5973"} 

And for second NSLog:

{ name = "1s\U0424 \U5973"; } 

So, nothing really changed for me. How to get properly encoded string ("1sФ 女") in NSDictionary?

2
  • Take a look at this article. Commented Apr 22, 2014 at 13:56
  • @MaciejOczko thanks for good reading. ) Commented Apr 22, 2014 at 14:20

1 Answer 1

1

NSLog uses the description method for printing NSDictionary, and that prints all non-ASCII characters in the escaped form. NSLog is used mainly for debug so this should not be a problem as the NSDictionary contains the wanted unicode characters.

Sign up to request clarification or add additional context in comments.

1 Comment

You are totally right. String is properly encoded when you output NSString object or put it in UILabel. Thanks.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.