Browse Source

Fix loading of non-ASCII text files

Ivan Savenko 2 years ago
parent
commit
df50a17d2a
2 changed files with 7 additions and 7 deletions
  1. 6 5
      lib/CGeneralTextHandler.cpp
  2. 1 2
      lib/CGeneralTextHandler.h

+ 6 - 5
lib/CGeneralTextHandler.cpp

@@ -99,13 +99,14 @@ protected:
 	}
 };
 
-CLegacyConfigParser::CLegacyConfigParser(std::string URI):
-	CLegacyConfigParser(CResourceHandler::get()->load(ResourceID(URI, EResType::TEXT)))
+CLegacyConfigParser::CLegacyConfigParser(std::string URI)
 {
-}
+	ResourceID resource(URI, EResType::TEXT);
+	auto input = CResourceHandler::get()->load(resource);
+	std::string modName = VLC->modh->findResourceOrigin(resource);
+	std::string language = VLC->modh->getModLanguage(modName);
+	fileEncoding = Languages::getLanguageOptions(language).encoding;
 
-CLegacyConfigParser::CLegacyConfigParser(const std::unique_ptr<CInputStream> & input)
-{
 	data.reset(new char[input->getSize()]);
 	input->read(reinterpret_cast<uint8_t*>(data.get()), input->getSize());
 

+ 1 - 2
lib/CGeneralTextHandler.h

@@ -34,6 +34,7 @@ class DLL_LINKAGE CLegacyConfigParser
 
 	/// reads "raw" string without encoding conversion
 	std::string readRawString();
+
 public:
 	/// read one entry from current line. Return ""/0 if end of line reached
 	std::string readString();
@@ -56,8 +57,6 @@ public:
 	bool endLine();
 
 	explicit CLegacyConfigParser(std::string URI);
-private:
-	explicit CLegacyConfigParser(const std::unique_ptr<CInputStream> & input);
 };
 
 class CGeneralTextHandler;