diff options
author | jmarshallnz <jcmarsha@gmail.com> | 2014-01-15 20:50:17 -0800 |
---|---|---|
committer | jmarshallnz <jcmarsha@gmail.com> | 2014-01-15 20:50:17 -0800 |
commit | dd2774f929685d31a4cc563255bbfd20843787bf (patch) | |
tree | c7a3a40e20faa6c6435b810bbfc058f44ee2fb55 | |
parent | 59cf420c2390176f354dd94e5dccb3c6ff63801d (diff) | |
parent | 6a641bf832dc621f253d268b2d29b7766acd4085 (diff) |
Merge pull request #4021 from Karlson2k/fix_scraper_break_utf8_01
Fix scraper errors with some special chars
-rw-r--r-- | xbmc/URL.cpp | 21 | ||||
-rw-r--r-- | xbmc/addons/Scraper.cpp | 2 |
2 files changed, 9 insertions, 14 deletions
diff --git a/xbmc/URL.cpp b/xbmc/URL.cpp index 07154fbd1a..eccc72fe6e 100644 --- a/xbmc/URL.cpp +++ b/xbmc/URL.cpp @@ -745,24 +745,21 @@ void CURL::Decode(CStdString& strURLData) void CURL::Encode(CStdString& strURLData) { - CStdString strResult; + std::string strResult; /* wonder what a good value is here is, depends on how often it occurs */ strResult.reserve( strURLData.length() * 2 ); - for (int i = 0; i < (int)strURLData.size(); ++i) + for (size_t i = 0; i < strURLData.size(); ++i) { - int kar = (unsigned char)strURLData[i]; - //if (kar == ' ') strResult += '+'; // obsolete - if (isalnum(kar) || strchr("-_.!()" , kar) ) // Don't URL encode these according to RFC1738 - { - strResult += kar; - } + const char kar = strURLData[i]; + + // Don't URL encode "-_.!()" according to RFC1738 + // TODO: Update it to "-_.~" after Gotham according to RFC3986 + if (StringUtils::isasciialphanum(kar) || kar == '-' || kar == '.' || kar == '_' || kar == '!' || kar == '(' || kar == ')') + strResult.push_back(kar); else - { - CStdString strTmp = StringUtils::Format("%%%02.2x", kar); - strResult += strTmp; - } + strResult += StringUtils::Format("%%%02.2x", (unsigned int)((unsigned char)kar)); // TODO: Change to "%%%02.2X" after Gotham } strURLData = strResult; } diff --git a/xbmc/addons/Scraper.cpp b/xbmc/addons/Scraper.cpp index b4684bcdd1..90fb81167b 100644 --- a/xbmc/addons/Scraper.cpp +++ b/xbmc/addons/Scraper.cpp @@ -572,8 +572,6 @@ std::vector<CScraperUrl> CScraper::FindMovie(XFILE::CCurlFile &fcurl, const CStd if (!fFirst) StringUtils::Replace(sTitle, '-',' '); - StringUtils::ToLower(sTitle); - vector<CStdString> vcsIn(1); g_charsetConverter.utf8To(SearchStringEncoding(), sTitle, vcsIn[0]); CURL::Encode(vcsIn[0]); |