libxml2 htmlSaveFileEnc将utf8字符保存为Г

时间:2016-07-31 09:50:01

标签: c utf-8 libxml2

我正在尝试使用libxml2保存utf8编码的html,它工作正常,但非ascii字符保存为Г。用于保存文件的代码:

htmlSaveFileEnc("modified.html", docPtr, "utf8");

如何防止这种情况并将其另存为

  

Г

utf8字符?

1 个答案:

答案 0 :(得分:1)

作为解决方法使用htmlDocContentDumpOutput()函数。将文档内容转储到char缓冲区并将缓冲区写入文件。

//htmlSaveFileEnc("modified.html", docPtr, "utf8");
xmlOutputBufferPtr out = xmlAllocOutputBuffer(NULL);
if (out) {
  htmlDocContentDumpOutput(out, docPtr, "utf8");
  const xmlChar *buffer = xmlBufferContent((xmlBuffer *) out->buffer);       
  // write buffer to file
  FILE *file = fopen("modified.html", "w");
  fputs((char *) buffer, file);
  fclose(file);

  xmlOutputBufferClose(out);
}