IDE: Embarcadero XE5 C++ Builder。
我正在尝试将 UnicodeStrings 转储到 XML CData 部分中。
以下是部分字符串:
u"‰PNG\r\n\x1A\n\0\0\0\rIHDR\0\0\0õ\0\0\02\b\x06\0\0\0„\\i\0\0\0\x01sRGB\0®Î\x1Cé\0\0\0\x04gAMA\0\0±\vüa\x05\0\0\0\tpHYs\0\0\x0EÃ\0\0\x0EÃ\x01Ço¨d\0\0\v¼IDATxÚíœypUÕ\x19ÀO\x06…°¤\x04D$ˆ²\b1š\b\x18@...etc"
我知道XML文档可以包含非ASCII字符,而且我认为XML CData部分的内容不会被XML解析器解析(除了结束部分指示符“[[>”,它并没有出现在我的数据中,我已经检查过了)。当我创建(写入)CData部分时,仍然会出现“在创建节点时找到文本内容中的无效字符”错误。
代码示例:
_di_IXMLDocument pXMLDocument = NewXMLDocument("1.0");
// I've played around with the document encoding with no success, guessing it's only applicable while reading the document.
// pXMLDocument->SetEncoding(L"iso-8859-1");
String myString; // Unicode, contains my data string.
// 1st param of CreateNode method is of type UnicodeString.
di_IXMLNode pCDataNode = pXMLDocument->CreateNode( myString, ntCData );
你认为为什么会失败?是编码问题吗?