我从一个网站获得了 unicode 文本并将其保存到 NSString,问题是字符串中的文本没有正确编码,所以我只看到符号。网站上的文字主要是希伯来文字。
NSLog(@"%@", [trafficNodes[0] firstChild]);
NSLog(@"%@", [[trafficNodes[0] firstChild] content]);
NSLog(@"%@", [[[trafficNodes[0] firstChild] content] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding]);
这是我在日志中看到的:
2013-01-25 18:44:26.391 HTMLParsing[2450:c07] {
nodeContent = "\U05f3\U009e\U05f3\U00a2\U05f3\U2022\U05f3\U201c\U05f3\U203a\U05f3\U009f \U05f3\U009c\U05f3\U00a9\U05f3\U00a2\U05f3\U201d: 18:35\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U05f3\U201d\U05f3\U00d7\U05f3\U00a0\U05f3\U2022\U05f3\U00a2\U05f3\U201d \U05f3\U2013\U05f3\U2022\U05f3\U00a8\U05f3\U009e\U05f3\U00d7.\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0***\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U05f3\U009c\U05f3\U009e\U05f3\U00a1\U05f3\U2122\U05f3\U00a8\U05f3\U00d7 \U05f3\U2022\U05f3\U009c\U05f3\U00a7\U05f3\U2018\U05f3\U009c\U05f3\U00d7 \U05f3\U201c\U05f3\U2122\U05f3\U2022\U05f3\U2022\U05f3\U2014\U05f3\U2122\U05f3\U009d \U05f3\U2022\U05f3\U00d7\U05f3\U2013\U05f3\U009e\U05f3\U2022\U05f3\U00a0\U05f3\U2122\U05f3\U009d \U05f3\U2014\U05f3\U2122\U05f3\U2122\U05f3\U2019\U05f3\U2022: 918 - 800 - 1-800\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U05f3\U2018\U05f3\U00a0\U05f3\U00a1\U05f3\U2122\U05f3\U00a2\U05f3\U201d \U05f3\U2018\U05f3\U00a7\U05f3\U00a8\U05f3\U2018\U05f3\U00d7 \U05f3\U2018\U05f3\U00d7\U05f3\U2122 \U05f3\U00a1\U05f3\U20aa\U05f3\U00a8, \U05f3\U2019\U05f3\U2122\U05f3\U00a0\U05f3\U2022\U05f3\U00d7 \U05f3\U009e\U05f3\U00a9\U05f3\U2014\U05f3\U00a7\U05f3\U2122\U05f3\U009d \U05f3\U2022\U05f3\U009e\U05f3\U00d7\U05f3\U00a0\"\U05f3\U00a1\U05f3\U2122\U05f3\U009d \U05d2\U20ac\U201c \U05f3\U2122\U05f3\U00a9 \U05f3\U009c\U05f3\U201d\U05f3\U2022\U05f3\U00a8\U05f3\U2122\U05f3\U201c \U05f3\U009e\U05f3\U201d\U05f3\U2122\U05f3\U00a8\U05f3\U2022\U05f3\U00d7, \U05f3\U2019\U05f3\U009d \U05f3\U203a\U05f3\U00a9\U05f3\U201d\U05f3\U203a\U05f3\U2018\U05f3\U2122\U05f3\U00a9 \U05f3\U20aa\U05f3\U00a0\U05f3\U2022\U05f3\U2122. \U05f3\U2018\U05f3\U201d\U05f3\U2019\U05f3\U2122\U05f3\U00a2\U05f3\U203a\U05f3\U009d \U05f3\U009c\U05f3\U009e\U05f3\U00a2\U05f3\U2018\U05f3\U00a8 \U05f3\U2014\U05f3\U00a6\U05f3\U2122\U05f3\U2122\U05f3\U201d \U05d2\U20ac\U201c \U05f3\U0090\U05f3\U20aa\U05f3\U00a9\U05f3\U00a8\U05f3\U2022 \U05f3\U00d7\U05f3\U009e\U05f3\U2122\U05f3\U201c \U05f3\U2014\U05f3\U00a6\U05f3\U2122\U05f3\U2122\U05f3\U201d \U05f3\U009c\U05f3\U2122\U05f3\U009c\U05f3\U201c \U05f3\U201d\U05f3\U009e\U05f3\U2018\U05f3\U00a7\U05f3\U00a9 \U05f3\U009c\U05f3\U2014\U05f3\U00a6\U05f3\U2022\U05f3\U00d7. \U05f3\U201d\U05f3\U2122\U05f3\U2022 \U05f3\U201c\U05f3\U00a8\U05f3\U2022\U05f3\U203a\U05f3\U2122\U05f3\U009d, \U05f3\U00a2\U05f3\U00a8\U05f3\U00a0\U05f3\U2122\U05f3\U2122\U05f3\U009d \U05f3\U2022\U05f3\U009e\U05f3\U00a8\U05f3\U2022\U05f3\U203a\U05f3\U2013\U05f3\U2122\U05f3\U009d, \U05f3\U2022\U05f3\U2014\U05f3\U20aa\U05f3\U00a9\U05f3\U2022 \U05f3\U0090\U05f3\U00d7\U05f3\U009d \U05f3\U0090\U05f3\U00d7 \U05f3\U201d\U05f3\U2122\U05f3\U009c\U05f3\U201c\U05f3\U2122\U05f3\U009d \U05f3\U201d\U05f3\U00a2\U05f3\U00a9\U05f3\U2022\U05f3\U2122\U05f3\U2122\U05f3\U009d \U05f3\U009c\U05f3\U201d\U05f3\U00d7\U05f3\U20aa\U05f3\U00a8\U05f3\U00a5 \U05f3\U009c\U05f3\U203a\U05f3\U2018\U05f3\U2122\U05f3\U00a9.\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0 \U00a0\U05f3\U00a2\U05f3\U2022\U05f3\U00a8\U05f3\U009a \U05f3\U201c\U05f3\U2122\U05f3\U2022\U05f3\U2022\U05f3\U2014\U05f3\U2122 \U05f3\U201d\U05f3\U00d7\U05f3\U00a0\U05f3\U2022\U05f3\U00a2\U05f3\U201d: \U05f3\U009e\U05f3\U2022\U05f3\U00a8 \U05f3\U00a0\U05f3\U00a2\U05f3\U009e\U05f3\U009f.";
nodeName = text;
}
2013-01-25 18:44:26.392 HTMLParsing[2450:c07] ׳׳¢׳•׳“׳›׳ ׳׳©׳¢׳”: 18:35 ׳”׳×׳ ׳•׳¢׳” ׳–׳•׳¨׳׳×. *** ׳׳׳¡׳™׳¨׳× ׳•׳׳§׳‘׳׳× ׳“׳™׳•׳•׳—׳™׳ ׳•׳×׳–׳׳•׳ ׳™׳ ׳—׳™׳™׳’׳•: 918 - 800 - 1-800 ׳‘׳ ׳¡׳™׳¢׳” ׳‘׳§׳¨׳‘׳× ׳‘׳×׳™ ׳¡׳₪׳¨, ׳’׳™׳ ׳•׳× ׳׳©׳—׳§׳™׳ ׳•׳׳×׳ "׳¡׳™׳ ג€“ ׳™׳© ׳׳”׳•׳¨׳™׳“ ׳׳”׳™׳¨׳•׳×, ׳’׳ ׳›׳©׳”׳›׳‘׳™׳© ׳₪׳ ׳•׳™. ׳‘׳”׳’׳™׳¢׳›׳ ׳׳׳¢׳‘׳¨ ׳—׳¦׳™׳™׳” ג€“ ׳׳₪׳©׳¨׳• ׳×׳׳™׳“ ׳—׳¦׳™׳™׳” ׳׳™׳׳“ ׳”׳׳‘׳§׳© ׳׳—׳¦׳•׳×. ׳”׳™׳• ׳“׳¨׳•׳›׳™׳, ׳¢׳¨׳ ׳™׳™׳ ׳•׳׳¨׳•׳›׳–׳™׳, ׳•׳—׳₪׳©׳• ׳׳×׳ ׳׳× ׳”׳™׳׳“׳™׳ ׳”׳¢׳©׳•׳™׳™׳ ׳׳”׳×׳₪׳¨׳¥ ׳׳›׳‘׳™׳©. ׳¢׳•׳¨׳ ׳“׳™׳•׳•׳—׳™ ׳”׳×׳ ׳•׳¢׳”: ׳׳•׳¨ ׳ ׳¢׳׳.
2013-01-25 18:44:27.358 HTMLParsing[2450:c07] ׳׳¢׳•׳“׳›׳ ׳׳©׳¢׳”: 18:35 ׳”׳×׳ ׳•׳¢׳” ׳–׳•׳¨׳׳×. *** ׳׳׳¡׳™׳¨׳× ׳•׳׳§׳‘׳׳× ׳“׳™׳•׳•׳—׳™׳ ׳•׳×׳–׳׳•׳ ׳™׳ ׳—׳™׳™׳’׳•: 918 - 800 - 1-800 ׳‘׳ ׳¡׳™׳¢׳” ׳‘׳§׳¨׳‘׳× ׳‘׳×׳™ ׳¡׳₪׳¨, ׳’׳™׳ ׳•׳× ׳׳©׳—׳§׳™׳ ׳•׳׳×׳ "׳¡׳™׳ ג€“ ׳™׳© ׳׳”׳•׳¨׳™׳“ ׳׳”׳™׳¨׳•׳×, ׳’׳ ׳›׳©׳”׳›׳‘׳™׳© ׳₪׳ ׳•׳™. ׳‘׳”׳’׳™׳¢׳›׳ ׳׳׳¢׳‘׳¨ ׳—׳¦׳™׳™׳” ג€“ ׳׳₪׳©׳¨׳• ׳×׳׳™׳“ ׳—׳¦׳™׳™׳” ׳׳™׳׳“ ׳”׳׳‘׳§׳© ׳׳—׳¦׳•׳×. ׳”׳™׳• ׳“׳¨׳•׳›׳™׳, ׳¢׳¨׳ ׳™׳™׳ ׳•׳׳¨׳•׳›׳–׳™׳, ׳•׳—׳₪׳©׳• ׳׳×׳ ׳׳× ׳”׳™׳׳“׳™׳ ׳”׳¢׳©׳•׳™׳™׳ ׳׳”׳×׳₪׳¨׳¥ ׳׳›׳‘׳™׳©. ׳¢׳•׳¨׳ ׳“׳™׳•׳•׳—׳™ ׳”׳×׳ ׳•׳¢׳”: ׳׳•׳¨ ׳ ׳¢׳׳.
我尝试使用不同的编码但没有运气。
编辑:
使用后:
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", string);
我在日志中看到了应该写的文本,现在如何在不丢失编码的情况下将其转换为 NSData?
我需要将它传递给 HTMLParser。
编辑(2):
对我有用的是使用正确的编码将 NSData 转换为 NSString 并返回:
NSString *encodedStringData = [[NSString alloc] initWithData:reportsHtmlData encoding:NSUTF8StringEncoding];
NSData *reportsHtmlDataEncoded = [encodedStringData dataUsingEncoding:CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingWindowsHebrew)];
谢谢你的帮助。