我似乎不理解XMLString::transcode(XMLCh*)和XMLString::transcode(char*)的用途,因为显然我不理解XMLCh*和char*之间的区别。有没有人能帮我说清楚点?
发布于 2012-03-23 04:52:18
Xerces在内部将信息编码为UTF-16。UTF-16数据使用XMLCh数据类型存储。
“c-style”字符串使用本地代码页中的char (可能是UTF-8,但这取决于平台和设置),您可以使用transcode在两者之间进行转换。
例如,如果您希望将一些数据从Xerces提供给另一个库,而该库需要本地代码页中的文本,则需要对其执行transcode操作。此外,如果您有char数据并希望将其提供给Xerces,则需要将其transcode到XMLCh,因为这是Xerces所理解的。
例如:
// to local code page
DOMNode *node = ...;
char* temp = XMLString::transcode(node->getNodeValue());
std::string value(temp);
XMLString::release(&temp);
// from local code page
DOMElement *element = ...;
XMLCh *tag = XMLString::transcode("test");
DOMNodeList *list = element->getElementsByTagName(tag);
XMLString::release(&tag);别忘了释放字符串!更好的方法是围绕它编写一些包装器,但在互联网上有可用的examples (只需搜索一个名为XercesString的类)。
如果您想了解更多关于编码的知识,我认为您应该阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
https://stackoverflow.com/questions/9826518
复制相似问题