Загрузка JavaFX Media возвращает MEDIA_UNAVAILABLE для не-US-ASCII символов в пути к медиа - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь создать простой проигрыватель musi c с использованием JavaFX Media и MediaPlayer, но недавно у меня возникла странная проблема: некоторые из моих mp3-файлов вызывали MediaException, но большинство из них не

Exception in thread "JavaFX Application Thread" MediaException: MEDIA_UNAVAILABLE

Я выяснил, что только файлы с не символами US-ASCII в пути к файлу выдают исключение, поэтому я попытался кодировать их с помощью класса URLEncoder, он ничего не исправил, поэтому я кое-что закончил как это:

String path = "";
try {
    path = new File(song.getFilePath()).toURI().toASCIIString();
} catch(Exception e) {
    e.printStackTrace();
}
Media currentSongMedia = new Media(path);

, но это все еще не решает проблему. Когда я печатаю переменную path, она отображается как закодированная без каких-либо символов, отличных от US-ASCII, но все равно не работает. Кодировка в моей IDE, кажется, установлена ​​правильно, также как и локаль приложения.

Пример пути к файлу, вызывающего проблему:

E:\music\trojkątwarszawski\06. Mięso.mp3

Воспроизводимый пример:

import java .io.File; import javafx.scene.media.Media;

public class Main {
    public static void main(String[] args) {
        String path = "E:\\music\\trojkatwarszawski\\06. Mięso.mp3";
        Media media = new Media(new File(path).toURI().toASCIIString());
    }
}


Есть идеи, что может вызвать проблему?

...