代码之家  ›  专栏  ›  技术社区  ›  andyvn22

nsImage、nsdata和nsxmldocument之间的文本编码问题

  •  0
  • andyvn22  · 技术社区  · 15 年前

    我正在尝试获取一个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 回复  |  直到 15 年前
        1
  •  2
  •   Can Berk Güder Pugalmuni    15 年前

    首先,在XML中嵌入大量的二进制数据不是一个好主意,imho。

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

    有关将任意nsdata表示为base64编码字符串的多种方法,请参阅本页: http://www.cocoadev.com/index.pl?BaseSixtyFour

    更新: 到colloquy的nsdata添加的链接在该页面上似乎已断开。这是新的网址: http://colloquy.info/project/browser/trunk/Additions/NSDataAdditions.m

    推荐文章