1

我试图加载一个未知编码的文件。这是因为我并不总是能够控制要加载的文件。我假设该方法stringWithContentsOfFile:usedEncoding:error:会执行此操作并让我知道文件编码。不幸的是,下面的代码没有提供我想要的编码——它总是返回0

NSStringEncoding *encoding = nil;
NSError *error = nil;
NSString *json = [NSString stringWithContentsOfFile:path
                                       usedEncoding:encoding
                                              error:&error];
NSLog(@"\n%lu\n%@",(unsigned long)encoding,error);

它返回文件的内容,所以你可能想知道为什么我需要这种编码,那个字符串是 JSON,我想将它序列化为 NSDictionary 并且该dataUsingEncoding:方法需要编码。我试图传递encoding变量,但这会引发错误。所以我尝试了故障安全 UTF8 编码,然后它工作了。

    NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];

所以我必须使用这个不正确的encoding等于0而不是4(UTF8)。有人可以帮我吗?

4

2 回答 2

3

试试看:

NSStringEncoding encoding;
NSError *error = nil;
NSString *json = [NSString stringWithContentsOfFile:path
                                   usedEncoding:&encoding
                                          error:&error];
NSLog(@"\n%lu\n%@",(unsigned long)encoding,error);

为了更清楚,您无法在指针中接收编码值,您需要提供一个纯NSStringEncoding地址

于 2014-07-23T13:29:40.897 回答
1

由于您不知道文件的编码,我建议您查看此链接。它基本上是字符串编程指南,它将让您深入了解该做什么。

以下是您正在查看的快照:

在此处输入图像描述

希望这会帮助你。快乐编码:)

于 2014-07-23T13:41:16.217 回答