编码问题:Cocoa Error 261?

Mik*_*e A 20 iphone cocoa json objective-c

所以我使用以下方法从我的iPhone应用程序中的PHP脚本中获取JSON字符串:

NSURL *baseURL = [NSURL URLWithString:@"test.php"];
NSError *encodeError = [[NSError alloc] init];
NSString *jsonString = [NSString stringWithContentsOfURL:baseURL encoding:NSUTF8StringEncoding error:&encodeError];
NSLog(@"Error: %@", [encodeError localizedDescription]);
NSLog(@"STRING: %@", jsonString);
Run Code Online (Sandbox Code Playgroud)

JSON字符串在测试输出时验证.现在我遇到了编码问题.当我获取单个echo'd行时,例如:

{ "testKey":"é" }
Run Code Online (Sandbox Code Playgroud)

JSON解析器工作正常,我能够创建一个有效的JSON对象.但是,当我获取2MB JSON字符串时,我会看到:

Error: Operation could not be completed. (Cocoa error 261.)
Run Code Online (Sandbox Code Playgroud)

和一个空字符串.我的PHP文件本身是UTF8,我没有使用utf8_encode(),因为这似乎是对数据进行双重编码,因为我已经将数据拉为NSUTF8StringEncoding.无论哪种方式,在我的单回显测试中,这是允许我在构建JSON对象时成功记录\ ASDAS样式UTF8转义的方法.

在较大字符串的情况下可能导致错误的原因是什么?

此外,我不确定它是否有所作为,但我在我解析的php数据上使用php函数addslashes()来计算引号等构建JSON字符串时.

Ric*_*ble 28

我很惊讶没有人提到在调用[NSString stringWithContentsOfFile:encoding:error:]时使用不同的编码值而不是NSUTF8StringEncoding.

解析JSON文件时,我也得到了Cocoa错误261.我刚刚浏览了NSString编码列表,直到有人工作.幸运的是,第一个为我工作:NSASCIIStringEncoding!

您还可以使用NSString stringWithContentsOfFile:usedEncoding:error:尝试查找正确的编码(如下所述:如何使用stringWithContentsOfURL:encoding:error:?).


Oli*_*lie 19

不知道这是不是你的问题,但我只是有一个类似的东西(stringWithContentsOfFile,没有JSON),问题是该文件有CRLF(windows)行结尾和西方 - 无论它叫什么编码.我使用SubEthaEdit转换为LF(Mac/Unix行结束)和UTF-8编码,现在一切正常.


yun*_*nas 5

编码问题:Cocoa Error 261? 我通过尝试不同的编码解决了这个问题.首先,我使用的是NSUTF8,然后我切换到NSASCIIStringEncoding并且它有效.

NSString* path = [[NSBundle mainBundle] pathForResource: @"fileName" ofType: @"type"];
NSData* data = [NSData dataWithContentsOfFile:path];
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@",string);
Run Code Online (Sandbox Code Playgroud)