gpt4 book ai didi

c - LibXML 内部和输出编码

转载 作者:行者123 更新时间:2023-11-30 16:04:23 27 4
gpt4 key购买 nike

我正在尝试使用 ISO-8859-1 中的 libxml2 编写 XML 文件。但从文档看来,对于我创建的每个文本节点,我都必须转换为 UTF-8,这是 libxml 的内部编码。然后,当调用 xmlSaveFormatFileEnc() 时,libxml 会转换为目标编码,并将编码属性添加到文档中。

这个假设正确吗?现在我的代码大致如下:

xmlNode *root_element = NULL, *node4 = NULL;
xmlDoc *doc = NULL;

doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION);
root_element = xmlNewDocNode(doc, NULL, BAD_CAST("root"),
NULL);
char * input_str = getLatin1Data();
isolat1ToUTF8(utf8_str, &file_size, input_str, &inlen);

node4 = xmlNewCDataBlock(doc, BAD_CAST list_content, xmlStrlen(BAD_CAST utf8_str));

xmlAddChild(root_element, node4);
xmlSaveFormatFileEnc("test_file.xml", doc, "UTF-8", 1);
xmlFreeDoc(doc);

最佳答案

你的假设是正确的。当需要 xmlChar 时,例如 xmlNewCDataBlock , xmlNewText ,它始终是 UTF-8:

来自 include/libxml/xmlstring.h (libxml 2.8.0):

/**
* xmlChar:
*
* This is a basic byte in an UTF-8 encoded string.
* It's unsigned allowing to pinpoint case where char * are assigned
* to xmlChar * (possibly making serialization back impossible).
*/

关于c - LibXML 内部和输出编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3164815/

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