2014-02-25 38 views
0

正确显示西班牙文本,我在把西班牙文本是从服务中获取编码ISO 8859-1在UITableView的

正确的格式面临的问题。服务器端他们编码为ISO-8859-1。这是一个XML服务。在我的

iOS7应用程序中,我使用了TBXml解析器来解析数据。该代码是:

NSString *XMLString = [[NSString alloc] initWithContentsOfURL:urlString encoding:NSISOLatin1StringEncoding error:nil]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

我解析这些数据,但是当有像 “BEBESŸ” 西班牙字符我

字符串将是 “BEB ... S y时”。和“øPorquÈalbergamos alborotadores?”而不是“”Porqué albergamos a alborotadores?“。请帮助

+0

你的代码看起来很好。你确定它实际上是ISO-8859-1编码吗?你可以切换到'[NSString -initWithContentsOfFile:usedEncoding:error:]'方法来尝试自动检测编码(它会向你报告它使用了什么)。 –

+0

@AaronBrager最好是下载二进制和让XML解析器决定编码。 – Sulthan

回答

1

你应该下载的XML数据为二进制(NSData)并让解析器处理编码。

NSData *data = [NSData dataWithContentsOfURL:url]; 

NSError *error; 
TBXML *tbxml = [TBXML tbxmlWithXMLData:data error:&error]; 

请注意,XML应该将内容编码作为第一行,因此不需要在代码中指定编码。

+0

谢谢。我用“NSUTF8StringEncoding”编码的TBXml解析器应该替换为“NSISOLatin1StringEncoding”? –

0

与NSUTF8StringEncoding尝试

NSString *XMLString = [[NSString alloc] initWithContentsOfURL:urlString encoding:NSUTF8StringEncoding error:nil]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

UPDATE:

NSData *dataContent = [[NSData dataWithContentsOfURL:urlString]; 
NSString *XMLString = [[NSString alloc] initWithData:dataContent encoding:NSISOLatin1StringEncoding]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLString:XMLString]; 

更新2:用数据初始化尝试

NSData *dataContent = [[NSData dataWithContentsOfURL:urlString]; 

TBXML *tbxml = [[TBXML alloc] initWithXMLData:XMLString]; 
+0

我用过那个,但是这次数据本身是空的 –

+0

查看我的更新 –

+0

也是这样算出来的朋友。但没用的 –