2015-02-19 6 views
0

Я пытаюсь получить теги ID3 из mp3-файлов с помощью Java ID3Tag Library. Но я получаю некоторые ошибки при извлечении строк со специальными символами (çáêü ...). Поэтому я превратил эти строки в массив байт:Ошибка кодировки при чтении тегов ID3 ​​

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», я получаю что-то вроде « B l u e y s t e r C u l t».

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

[EDIT]

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

  • Чтение из кодировок, как US_ASCII или iso_8859_1 вызовет полукокс, который будет отображаться в виде байта 63.

+0

Возможно, ошибка в библиотеке или недопустимый файл MP3 (вызванный программой, которая сгенерировала ее с ошибкой). – immibis

+0

Правильно ли отображается тег ID3 с другой программой - т. Е. Ваш музыкальный плеер? –

+0

Да, они корректно отображаются в других программах. –

ответ

0

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

Смежные вопросы