簡體   English   中英

C ++中的libxml2,如何設置編碼

[英]libxml2 in C++, how to set encoding

我正在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 doc創建指定編碼。 以下是我使用的示例代碼。

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM