【问题标题】:Encoding ISO 8859-1 to display Spanish text correctly in UITableview编码 ISO 8859-1 以在 UITableview 中正确显示西班牙语文本
【发布时间】:2014-03-27 09:58:47
【问题描述】:

我在转换从

中的服务获取的西班牙语文本时遇到问题

格式正确。服务器端它们使用ISO-8859-1 进行编码。这是一个xml服务。在我的

iOS7 应用,我正在使用TBXml 解析器来解析数据。代码是:

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

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

我正在解析这些数据,但是当有像“BEBÉS Y”这样的西班牙字符时,我的

字符串将是 "BEB...SY" 。而“øPor quÈ albergamos a alborotadores?”而不是“¿Por qué albergamos a alborotadores?" . 请帮忙

【问题讨论】:

  • 您的代码看起来不错。你确定它实际上是 ISO-8859-1 编码吗?您可以切换到方法[NSString -initWithContentsOfFile:usedEncoding:error:] 让它尝试自动检测编码(它会向您报告它使用了什么。)
  • @AaronBrager 最好下载二进制文件并让 XML 解析器决定编码。

标签: iphone objective-c ios7 ios6.1 tbxml


【解决方案1】:

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

NSData *data = [NSData dataWithContentsOfURL:url];

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

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

【讨论】:

  • 谢谢。我的 TBXml 解析器编码为“NSUTF8StringEncoding”,我应该用“NSISOLatin1StringEncoding”替换吗?
【解决方案2】:

尝试使用 NSUTF8StringEncoding

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

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

更新:

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];

【讨论】:

  • 我用过,但这次数据本身是空的
  • 谢谢你的朋友。 NSData *dataContent = [[NSData dataWithContentsOfURL:urlString];
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多