if (strUrl.IsEmpty())
return false;
- // ok, now parse the xml file
CXBMCTinyXML doc;
doc.Parse(strUrl, TIXML_ENCODING_UNKNOWN);
if (XFILE::CFile::Exists(strCachePath))
{
XFILE::CFile file;
- if (file.Open(strCachePath))
+ XFILE::auto_buffer buffer;
+ if (file.LoadFile(strCachePath, buffer))
{
- size_t flen = file.GetLength();
- char* temp = new char[flen];
- strHTML.assign(temp, file.Read(temp, flen));
- file.Close();
- delete[] temp;
+ strHTML.assign(buffer.get(), buffer.length());
return true;
}
}
return false;
strHTML = strHTML1;
+ std::string fileCharset(http.GetServerReportedCharset());
if (scrURL.m_url.Find(".zip") > -1 )
{
int iSize = file.UnpackFromMemory(strBuffer,strHTML,scrURL.m_isgz);
if (iSize)
{
+ fileCharset.clear();
strHTML.clear();
strHTML.append(strBuffer.c_str(),strBuffer.data()+iSize);
}
}
+ if (!fileCharset.empty() && fileCharset != "UTF-8")
+ {
+ std::string converted;
+ if (g_charsetConverter.ToUtf8(fileCharset, strHTML, converted) && !converted.empty())
+ strHTML = converted;
+ }
+
if (!scrURL.m_cache.IsEmpty())
{
CStdString strCachePath = URIUtils::AddFileToFolder(g_advancedSettings.m_cachePath,