У меня возникли проблемы с загрузкой * 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("");
}
}
* 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
Спасибо, что работает. Но проблема заключается в том, что я не могу ожидать, что пользователи изменят свои расширения списков воспроизведения, когда я опубликую свою программу позже. Например, мой плейлист создан с помощью MediaMonkey, который, похоже, сохраняет UTF8-Playlists как * m3u. Возможно, в любом случае можно проверить кодировку файла и создать что-то вроде виртуального * m3u8, который я могу загрузить в QMediaPlaylist? – honiahaka10
Я думаю, вы могли бы просто предположить, что плейлисты кодируются в кодировке UTF-8 и всегда делают временную копию m3u (и меняют расширение на m3u8, так что, когда вы передаете его в QMediaPlaylist, он справится с любыми символами UTF-8) , Я не думаю, что вы можете сделать что-то лучше этого. –
Здесь есть несколько дополнительных сведений о некоторых вариантах, если вы хотите попробовать: http://stackoverflow.com/questions/910793/detect-encoding-and-make-everything-utf-8?rq=1, но это все для php, а не C++/Qt –