当我获取任何网页的源代码时,无论我使用什么编码,我总是以 - 字符(例如 © 或 ®)结束,而不是实际的字符本身。这也适用于外来字符(例如瑞典语中的 åäö),我必须从“Å”等解析)。
我正在使用
+stringWithContentsOfUrl: encoding: error;
获取源代码并尝试了几种不同的编码,例如 NSUTF8StringEncoding 和 NSASCIIStringEncoding,但似乎没有什么影响最终结果字符串。
非常感谢任何想法/提示/解决方案!我不想实现整个 ASCII 表并替换每个字符的所有出现...提前致谢!
问候
最佳答案
I'm using
+stringWithContentsOfUrl: encoding: error;
to fetch the source and have tried several different encodings such as NSUTF8StringEncoding and NSASCIIStringEncoding, but nothing seems to affect the end result string.
您误解了 encoding:
参数的目的。该方法需要以某种方式将字节转换为字符;编码告诉它什么字节序列描述了哪些字符。您需要确保编码与资源数据的编码相匹配。
实体引用是一个 SGML/XML 事物。 SGML 和 XML 不是编码;它们是标记语言语法。 stringWithContentsOfURL:encoding:error:
及其同类不会尝试以任何方式解析字符序列(语法),而这是它们转换一个字符序列(实体引用)时必须做的事情转换为不同的实体(实体,实际上意味着单个字符,即被引用)。
您可以使用 the CFXMLCreateStringByUnescapingEntities
function 将实体引用转换为未转义字符。 。它接受一个 CFString,即 NSString ( toll-free bridging ),并返回一个 CFString,即 NSString。
关于iPhone SDK - HTML 源代码中的 stringWithContentsOfUrl ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310644/