读取 ID3 标签时出现字符集错误
Charset error while reading ID3 tags
我正在尝试使用 Java ID3Tag Library 从 mp3 文件中检索 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”的内容。
我能做些什么来标准化这些字符串?
[编辑]
少数带有特殊字符的mp3文件可以正确显示。
从 US_ASCII 或 ISO_8859_1 等字符集中读取将导致字符 � 显示为字节 63。
正如immibis所说,这可能是图书馆的一个错误。我最终使用了 mp3agic 库,一切正常。
我正在尝试使用 Java ID3Tag Library 从 mp3 文件中检索 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”的内容。
我能做些什么来标准化这些字符串?
[编辑]
少数带有特殊字符的mp3文件可以正确显示。
从 US_ASCII 或 ISO_8859_1 等字符集中读取将导致字符 � 显示为字节 63。
正如immibis所说,这可能是图书馆的一个错误。我最终使用了 mp3agic 库,一切正常。