Explorar o código

Use libxml2 for save FB2

Kandrashin Denis %!s(int64=13) %!d(string=hai) anos
pai
achega
5ab4a30859
Modificáronse 3 ficheiros con 5 adicións e 2 borrados
  1. 2 0
      source/fb2read.cpp
  2. 1 0
      source/fb2save.cpp
  3. 2 2
      source/fb2xml2.cpp

+ 2 - 0
source/fb2read.cpp

@@ -2,6 +2,7 @@
 #include <QtDebug>
 
 #include "fb2read.h"
+#include "fb2xml2.h"
 
 //---------------------------------------------------------------------------
 //  Fb2ReadThread
@@ -289,6 +290,7 @@ Fb2XmlHandler::NodeHandler * Fb2ReadHandler::TextHandler::NewTag(const QString &
         case Code      : tag = "tt";  break;
         case Sub       : tag = "sub"; break;
         case Sup       : tag = "sup"; break;
+        default: ;
     }
     return new TextHandler(this, name, atts, tag, style);
 }

+ 1 - 0
source/fb2save.cpp

@@ -84,6 +84,7 @@ Fb2XmlHandler::NodeHandler * Fb2SaveHandler::BodyHandler::NewTag(const QString &
         case Code      : tag = "code"          ; break;
         case Sub       : tag = "sub"           ; break;
         case Sup       : tag = "sup"           ; break;
+        default: ;
     }
     return new BodyHandler(this, name, atts, tag, style);
 }

+ 2 - 2
source/fb2xml2.cpp

@@ -57,7 +57,7 @@ LibXml2ReaderPrivate::LibXml2ReaderPrivate(LibXml2Reader* reader)
 void LibXml2ReaderPrivate::parse(const QXmlInputSource* input)
 {
 	htmlSAXHandler handler;
-	QByteArray arr = input->data().toLocal8Bit();
+        QByteArray arr = input->data().toUtf8();
 	const char* data = arr.data();
 
 	std::memset(&handler, 0, sizeof(handler));
@@ -72,7 +72,7 @@ void LibXml2ReaderPrivate::parse(const QXmlInputSource* input)
 	handler.ignorableWhitespace   = &LibXml2ReaderPrivate::ignorableWhitespace;
 	handler.internalSubset        = &LibXml2ReaderPrivate::internalSubset;
 
-	this->context = htmlCreatePushParserCtxt(&handler, this, data, xmlStrlen(reinterpret_cast<const xmlChar*>(data)), "", XML_CHAR_ENCODING_NONE);
+        this->context = htmlCreatePushParserCtxt(&handler, this, data, xmlStrlen(reinterpret_cast<const xmlChar*>(data)), "", XML_CHAR_ENCODING_UTF8);
 	htmlParseChunk(this->context, NULL, 0, 1);
 	htmlFreeParserCtxt(this->context);
 	xmlCleanupParser();