0

我想使用 JSON 文件中的在线数据。它目前正在工作,但是当我使用特殊字符时,它显示“null”。这是我正在使用的代码:

NSString *urlString = [NSString stringWithFormat:@"http://belesios.com/burc/koc2.php"];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"%@", json);
NSString *ciktiText = [[NSString alloc] initWithFormat:@"%@", json];
[kocLabel setText:ciktiText];

例如,如果我的文件包含 ç 或 ü,则返回 null。我需要做什么?

4

1 回答 1

4

试试这个方法,看看从服务器拉取数据时使用的是什么编码:

NSStringEncoding encoding;
NSString *jsonString =[NSString stringWithContentsOfURL:URL usedEncoding:&encoding error:&error];
if (error)
    NSLog(@"Error: %@", error);

您应该检查服务器返回的数据的编码。您的代码是正确的,但您应该添加一些检查 if error != nil 然后不要执行并显示或记录它。

NSString *jsonString = @"{\"abc\":\"ç or ü\"}";
NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&error];
NSLog(@"Output: %@", jsonObj);

输出: { abc = "\U00e7 或 \U00fc"; 如果您使用Fiddler或其他软件打印原始响应,这就是您的服务器响应与编码字符的样子。

目前,您的数据看起来像 UTF8 编码的字符应该像\U00e7 = ç 在此处输入图像描述

于 2013-02-22T19:39:27.910 回答