Ошибка кодировки при чтении тегов ID3

Я пытаюсь извлечь теги ID3 из mp3-файлов с помощью библиотеки Java ID3Tag. Но я получаю некоторые ошибки при извлечении строк со специальными символами (текст...). Итак, я преобразовал эти строки в байтовые массивы:

ID3v2_4 tag=(ID3v2_4) mp3file.getID3v2Tag();
byte [] artBytes=tag.getLeadArtist().getBytes();
for (int i=0;i<artBytes.length;i++){
   System.out.println(artBytes[i]);
}

А потом я обнаружил, что каждый "неизвестный" символ (как и первые байты в строке) читается как трехбайтовая последовательность -17 -65 -67 (" " в строке). Кроме того, после каждой буквы есть байт 0. Итак, если я хочу прочитать "Blue Öyster Cult", я получаю что-то вроде "lB lue y s t e r C u l t".

Что я могу сделать, чтобы нормализовать эти строки?

[РЕДАКТИРОВАТЬ]

  • Несколько mp3-файлов со специальными символами отображаются правильно.

  • Чтение из кодировок, таких как US_ASCII или ISO_8859_1, приведет к отображению char as в виде байта 63.

1 ответ

Решение

Как сказал immibis, это, вероятно, ошибка в библиотеке. Я использовал библиотеку mp3agic, и все работало нормально.

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