Я пытаюсь написать XML-файлы с помощью libxml2 в ISO-8859-1. Но из документации кажется, что для каждого создаваемого текстового узла мне придется преобразовать в UTF-8, который является внутренней кодировкой libxml. Затем при вызове xmlSaveFormatFileEnc() libxml преобразуется в целевую кодировку и добавляет атрибут кодировки в документ.Внутренние и выходные кодировки 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);
Это не ответ на ваш вопрос, но я бы на самом деле предложите переосмыслить свое решение использовать Latin-1. Вы, вероятно, пожалеете об этом несколько лет (или даже месяцы) по линии, даже для чего-то такого же простого, как желание символа евро в строке ... Есть веская причина, по которой UTF-8 является кодировкой по умолчанию для XML и любого современного , –
Да, теперь я только пытаюсь получить право UTF-8. isolat1ToUTF8() не хочет мне помогать :( –