gpt4 book ai didi

c++ - C++中的libxml2,如何设置编码

转载 作者:行者123 更新时间:2023-11-28 00:03:03 27 4
gpt4 key购买 nike

我正在使用 C++ 中的 libxml2 创建一个 xml 文档。创建 xml 文件后,我在 xml 缓冲区的顶部看到以下行。

<?xml version="1.0" encoding="ISO-8859-1"?>

我在创建文档时没有指定任何编码。一些 xml 内容的 ascii 值大于 127,这不是 ISO-8859-1 编码处理的。例如:我的 xml 内容中有英镑字符 (£)。因此,每当它遇到大于 127 的 ascii 值时,它就会中断并且我的 xml 文件不完整。我从一些论坛上读到说将编码更改为 UTF-8 可以处理这种情况。但我不知道如何为 xml 文档创建指定编码。以下是我使用的示例代码。

xmlDoc *doc = NULL;
xmlChar *xmlbuff = NULL;
int buffersize;
xmlNodePtr pNode;
doc = xmlNewDoc(NULL);
pNode = xmlNewNode(0, (const xmlChar*)"Temp");
xmlDocSetRootElement(doc, pNode);
xmlSetProp(pNode, (const xmlChar*)"Item", (const xmlChar*)"Office£");
xmlDocDumpMemory(doc, &xmlbuff, &buffersize);
xmlFree(xmlbuff);
xmlFreeDoc(doc);
doc = NULL;

输出:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Temp Item="Office

最佳答案

我想你应该使用 xmlDocDumpMemoryEnc()(或者 xmlDocDumpFormatMemoryEnc(),如果你也想控制缩进)而不是 xmlDocDumpMemory().

有点像

xmlDocDumpMemoryEnc(doc, &xmlbuff, &buffersize, "UTF-8");

关于c++ - C++中的libxml2,如何设置编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37485096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com