Ошибка кодировки при чтении тегов 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, и все работало нормально.