diff options
author | jmarshallnz <jcmarsha@gmail.com> | 2012-11-27 11:25:57 -0800 |
---|---|---|
committer | jmarshallnz <jcmarsha@gmail.com> | 2012-11-27 11:25:57 -0800 |
commit | 0a59a1f2e01108e529d8d822d48f7a994821a57a (patch) | |
tree | 18fdb3b15a80ec88da0c5f8abd8ff333cb2e72ed | |
parent | c9f398bc532060b6a6defedd591cf26dcabd77cd (diff) | |
parent | 324a8c491d35ba5257a2b3fe9e396f533f45e94e (diff) |
Merge pull request #1851 from taxigps/taglib
fixed: reimplementing Latin1StringHandler.parse() to get non-ISO-8859-1 ...
-rw-r--r-- | xbmc/music/tags/TagLoaderTagLib.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/xbmc/music/tags/TagLoaderTagLib.cpp b/xbmc/music/tags/TagLoaderTagLib.cpp index 5e9ce9f8da..48dcd4d90b 100644 --- a/xbmc/music/tags/TagLoaderTagLib.cpp +++ b/xbmc/music/tags/TagLoaderTagLib.cpp @@ -44,12 +44,29 @@ #include "utils/URIUtils.h" #include "utils/log.h" #include "utils/StringUtils.h" +#include "utils/CharsetConverter.h" #include "settings/AdvancedSettings.h" using namespace std; using namespace TagLib; using namespace MUSIC_INFO; +class TagStringHandler : public ID3v2::Latin1StringHandler +{ +public: + TagStringHandler() {} + virtual ~TagStringHandler() {} + virtual String parse(const ByteVector &data) const + { + CStdString strSource(data.data(), data.size()); + CStdString strUTF8; + g_charsetConverter.unknownToUTF8(strSource, strUTF8); + return String(strUTF8, String::UTF8); + } +}; + +static const TagStringHandler StringHandler; + CTagLoaderTagLib::CTagLoaderTagLib() { } @@ -84,6 +101,7 @@ bool CTagLoaderTagLib::Load(const string& strFileName, CMusicInfoTag& tag, Embed return false; } + ID3v2::Tag::setLatin1StringHandler(&StringHandler); TagLib::File* file = NULL; TagLib::APE::File* apeFile = NULL; TagLib::ASF::File* asfFile = NULL; |