Я пытаюсь извлечь теги ID3 из файлов mp3 с помощью Java ID3Tag Library. Но я получаю некоторые ошибки при извлечении строк со специальными символами (çáêü...). Итак, я преобразовал эти строки в массивы байтов:
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 Cult».
Что я могу сделать, чтобы нормализовать эти строки?
[РЕДАКТИРОВАТЬ]
Некоторые mp3-файлы со специальными символами отображаются корректно.
Чтение из кодировок, таких как US_ASCII или ISO_8859_1, приведет к тому, что символ � будет отображаться как байт 63.
getBytes(StandardCharsets.UTF_8)
) и предоставив полный пример вывода (например, Arrays.toString(artByte) и tag.getLeadArtist() ). - person Adrian Leonhard   schedule 20.02.2015