Опитвам се да извлека 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 C u l t.
Какво мога да направя, за да нормализирам тези низове?
[РЕДАКТИРАНЕ]
Няколко mp3 файла със специални знаци се показват правилно.
Четенето от набори от знаци като US_ASCII или ISO_8859_1 ще доведе до показване на char � като байт 63.
getBytes(StandardCharsets.UTF_8)
) и дадете пълен примерен изход (напр. Arrays.toString(artByte) и tag.getLeadArtist() ). - person Adrian Leonhard   schedule 20.02.2015