Ich erstelle ein XML-Dokument mit libxml2 in C++. Nachdem die XML-Datei erstellt wurde, sehe ich die folgende Zeile oben im XML-Puffer.libxml2 in C++, wie man Codierung einstellt
<?xml version="1.0" encoding="ISO-8859-1"?>
Ich habe beim Erstellen des Dokuments keine Codierung angegeben. Ein Teil des XML-Inhalts ascii ist größer als 127, was nicht durch die ISO-8859-1-Codierung gehandhabt wird. Zum Beispiel: Ich habe Pfund-Zeichen (£) in meinem XML-Inhalt. Wann immer es einen ASCII-Wert größer als 127 antrifft, bricht es ab und meine XML-Datei ist unvollständig. Ich habe aus einigen Foren gelesen, dass das Ändern der Codierung in UTF-8 diese Art von Szenarien behandelt. Aber ich weiß nicht, wie ich die Kodierung für die Erstellung des XML-Dokuments festlegen soll. Im Folgenden ist der Beispielcode, den ich verwendet habe.
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;
Ausgang:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Temp Item="Office
Hinweis: das beobachtete Verhalten von Ihrem Anruf xmlSetProp ausgelöst wurde. Wie wurde Ihrer Meinung nach der Wert von "Item" interpretiert? –