【问题标题】:NSData / Encoding issue : why won't I read all the characters correctly?NSData / 编码问题:为什么我不能正确读取所有字符?
【发布时间】: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中,它不能包含项目符号或右单引号,除非它们被引用•’,因为它们在@中不存在987654333@。但是我认为它们存在于微软的变体Windows-1252 中。很可能生成 XML 的代码没有使用正确的方法来序列化 XML,或者它混淆了 ISO-8859-1Windows-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


【解决方案1】:

使用UTF-8 而不是ISO-8859-1 解决了它。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2021-10-06
    • 2020-02-07
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多