Проблема кодирования текста между NSImage, NSData и NSXMLDocument - PullRequest
0 голосов
/ 04 апреля 2010

Я пытаюсь взять 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"

Полагаю, мне не хватает чего-то простого. Что за проблема с кодировкой?

1 Ответ

2 голосов
/ 04 апреля 2010

Прежде всего, встраивание больших объемов двоичных данных в XML не очень хорошая идея, ИМХО.

Чтобы ответить на ваш вопрос, вам нужна схема кодирования, которая поддерживает двоичные данные, такие как Base64 .

См. Эту страницу для более чем одного способа представления произвольных NSData в виде строки в кодировке Base64: http://www.cocoadev.com/index.pl?BaseSixtyFour

ОБНОВЛЕНИЕ: Ссылка на дополнения Colloquy's NSData на этой странице не работает. Вот новый URL: http://colloquy.info/project/browser/trunk/Additions/NSDataAdditions.m

...