【发布时间】:2013-02-19 12:10:27
【问题描述】:
我正在使用一个ASP 请求返回一个包含一些拉丁字符的XML 文件。
通过使用此代码:
NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.my-link.asp"]];
NSString *str = [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
我几乎正确读取了文件的每个字符。几乎,因为其中一些被这个字符取代:¿。我说的是子弹(•, 8226) 和右单引号(’, 8217),但我敢打赌我会遇到其他不寻常字符的问题。
我的XML 前缀是<?xml version="1.0" encoding="ISO-8859-1"?>。我想知道我的XML 文件或我的代码是否有问题,以及如何解决。
【问题讨论】:
-
您确定响应实际上是在“ISO-8859-1”中,并且不仅仅是声明它的 xml 声明吗?
-
如果文件确实在
ISO-8859-1中,它不能包含项目符号或右单引号,除非它们被引用&#8226;和&#8217;,因为它们在@中不存在987654333@。但是我认为它们存在于微软的变体Windows-1252中。很可能生成 XML 的代码没有使用正确的方法来序列化 XML,或者它混淆了ISO-8859-1和Windows-1252。它可能只是连接字符串或类似的东西,这是一个巨大的禁忌。见stackoverflow.com/questions/3034611/… -
我只是尝试使用 TextWrangler 和 Latin 1 编码保存 XML 结果文件,但每个字符都重复出现这些错误:
untitled text:1: The character “’” (unicode 0x2019) cannot be represented in the “Western (ISO Latin 1)” encoding -
所以改用 UTF-8。并确保使用正确的方法生成 XML。
"<tag>"+escape(value)+"</tag>"只是没有削减它。
标签: ios xml encoding character-encoding iso-8859-1