我正在尝试在ios模拟器和ipod touch上显示一些日文文本。从XML文件中读取文本。标题是:
<?xml version="1.0" encoding="utf-8"?>
当文字是英文时,它显示正常。但是,当文本是日文时,它是一个难以理解的单字节字符混搭。
我尝试使用TextEdit将文件专门保存为unicode。我正在使用NSXMLParser来解析数据。任何想法都会非常感激。
这是解析代码
// Override point for customization after application launch.
NSString *xmlFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"questionsutf8.xml"];
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath];
NSData *data = [NSData dataWithBytes:[xmlFileContents UTF8String] length:[xmlFileContents lengthOfBytesUsingEncoding: NSUTF8StringEncoding]];
XMLReader *xmlReader = [[XMLReader alloc] init];
[xmlReader parseXMLData: data];
答案 0 :(得分:2)
stringWithContentsOfFile:
是一种弃用的方法。除非文件包含适当的字节顺序标记,否则它不执行编码检测,否则它将文件解释为默认C字符串编码(+defaultCStringEncoding
方法返回的编码)。相反,您应该使用未弃用的[和编码检测]方法stringWithContentsOfFile:usedEncoding:error:
。
你可以像这样使用它:
NSStringEncoding enc;
NSError *error;
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath
usedEncoding:&enc
error:&error];
if (xmlFileContents == nil)
{
NSLog (@"%@", error);
return;
}
答案 1 :(得分:1)
首先,您应该使用TextWrangler(从Mac应用商店或barebones.com免费)验证您的XML文件是否真的是UTF-8编码。
其次,尝试使用+ stringWithContentsOfFile:encoding:error:创建xmlFileContents,显式指定UTF-8编码。或者,更好的是,完全绕过中间字符串,并使用+ dataWithContentsOfFile创建数据:。