Гибберишский результат чтения тегов юникода с использованием mp3agic в Java

Я пытаюсь прочитать теги русских песен на Java, используя mp3agic:

Mp3File song;
try {
    song = new Mp3File(newURI);
    if (song.hasId3v2Tag()) {
        ID3v2 id3v2tag  = song.getId3v2Tag();
        title   = id3v2tag.getTitle();
        artist  = id3v2tag.getArtist();
    }
    else if (song.hasId3v1Tag()){
        ID3v1 id3v1tag  = song.getId3v1Tag();
        title   = id3v1tag.getTitle();
        artist  = id3v1tag.getArtist();
    }
}

Однако я получаю это "??-2??????????????" вместо этого "Би-2Скользкие Улицы". Что я могу сделать, чтобы решить эту проблему?

1 ответ

Решение

Объяснение этой проблемы можно найти по адресу: https://github.com/mpatric/mp3agic/issues/39

Таким образом, проблема в том, что кодировка текста - windows-1251 (также известная как cp1251). Теги ID3v2 со строками в кодировке Windows-1251 (или любой другой кодировкой, которая не является одной из 4 поддерживаемых кодировок для ID3v2) недопустимы. Программно отличить windows-1251 от iso-8859-1 непросто, поэтому автоматическое определение строк для их перекодирования может быть сложным.

Некоторые интересные комментарии здесь: https://superuser.com/questions/495775/how-to-translate-wacky-metadata-to-readable-format

Другие вопросы по тегам