2017-01-05 2 views
0

У меня возникли проблемы с загрузкой * m3u -playlistfiles с UTF-8 -encoding с QMediaPlaylist. Путь к первой записи загружен неправильно.QMediaPlaylist и UTF-8

Как вы можете видеть на скриншоте путь к первой записи начинается с D:/D/Media/New folder/, что путь в список воспроизведения, а затем , а затем относительный путь к MediaFile как это Iis сохраняется в * m3u- файл.

С * m3u-файлами с ANSI -encoding У меня нет этих проблем.

Также символы типа «ü» в этом случае (вторая запись) неправильно закодированы.

Есть ли способ исправить это, не кодируя собственный плейлист-парсер?

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QDirIterator it("D:/D/Media/New folder", QStringList() << "*.m3u", QDir::Files, QDirIterator::Subdirectories); 
    while (it.hasNext()) 
    { 
     it.next(); 
     QMediaPlaylist currentPlaylist; 
     currentPlaylist.clear(); 
     currentPlaylist.load(QUrl::fromLocalFile(it.filePath())); 
     currentPlaylist.setCurrentIndex(0); 
     int x = 1; 
     ui->textBrowser->append(it.fileName()); 
     ui->textBrowser->append("-----"); 
     while(currentPlaylist.mediaCount() > 0) 
     { 
      ui->textBrowser->append(QString::number(x) + QString(": ") + currentPlaylist.currentMedia().canonicalUrl().toString()); 
      x++; 
      currentPlaylist.removeMedia(0); 
     } 
     ui->textBrowser->append(""); 
    } 
} 

enter image description here

* m3u-контент

..\Musik\Mittelalter Party\Mittelalter Party Volume 1\Tanzwut - Meer.mp3 
..\Musik\ASP\Humility\ASP - Küss mich (Chamber version).mp3 
..\Musik\Disturbed\Ten Thousand Fists\Disturbed - Ten Thousand Fists.mp3 

ответ

1

Википедия говорит, что UTF-8 закодированные плейлисты должны иметь расширение .m3u8. Вы пытались изменить расширение файла на .m3u8?

+0

Спасибо, что работает. Но проблема заключается в том, что я не могу ожидать, что пользователи изменят свои расширения списков воспроизведения, когда я опубликую свою программу позже. Например, мой плейлист создан с помощью MediaMonkey, который, похоже, сохраняет UTF8-Playlists как * m3u. Возможно, в любом случае можно проверить кодировку файла и создать что-то вроде виртуального * m3u8, который я могу загрузить в QMediaPlaylist? – honiahaka10

+1

Я думаю, вы могли бы просто предположить, что плейлисты кодируются в кодировке UTF-8 и всегда делают временную копию m3u (и меняют расширение на m3u8, так что, когда вы передаете его в QMediaPlaylist, он справится с любыми символами UTF-8) , Я не думаю, что вы можете сделать что-то лучше этого. –

+0

Здесь есть несколько дополнительных сведений о некоторых вариантах, если вы хотите попробовать: http://stackoverflow.com/questions/910793/detect-encoding-and-make-everything-utf-8?rq=1, но это все для php, а не C++/Qt –