0

我正在尝试获取 NSImage 并将其转换为可以写入 XML 文档的字符串。

我目前的尝试看起来像这样:

[xmlDocument setCharacterEncoding: @"US-ASCII"];

NSData* data = [image TIFFRepresentation];
NSString* string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

//Put string inside of NSXMLElement, write out NSXMLDocument.

回读看起来像这样:

NSXMLDocument* newXMLDocument = [[NSXMLDocument alloc] initWithData:data options:0 error:outError];
//Here's where it fails. I get:
//Error Domain=NSXMLParserErrorDomain Code=9 UserInfo=0x100195310 "Line 7: Char 0x0 out of allowed range"

我想我错过了一些基本的东西。这个编码问题是怎么回事?

4

1 回答 1

2

首先,在 XML 中嵌入大量二进制数据不是一个好主意,恕我直言。

要回答您的问题,您需要一个支持二进制数据的编码方案,例如Base64

有关将任意 NSData 表示为 Base64 编码字符串的不止一种方法,请参见此页面:http: //www.cocoadev.com/index.pl?BaseSixtyFour

更新: Colloquy 的 NSData 添加的链接似乎在该页面上已损坏。这是新的 URL:http ://colloquy.info/project/browser/trunk/Additions/NSDataAdditions.m

于 2010-04-03T23:19:55.763 回答