我正在尝试使用Java中的jid3lib从MP3文件中找到ID3V2标签。但是我的字符串变得杂乱无章。这是我的代码:
import org.farng.mp3.MP3File;
import org.farng.mp3.id3.AbstractID3v2;
public class NewClass {
public static void main(String [] args){
try{
MP3File file = new MP3File("c:\\2.mp3");
AbstractID3v2 tag = file.getID3v2Tag();
String str = tag.getAuthorComposer();
System.out.println("Lenght: "+str.length());
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
System.out.println(i+": "+"'"+(ch)+"' : "+((int)ch));
}
System.out.println(str);
}catch(Exception e){
e.printStackTrace();
}
}
}
我得到以下输出:
Lenght: 35
0: '�' : 65533
1: '�' : 65533
2: 'H' : 72
3: ' ' : 0
4: 'i' : 105
5: ' ' : 0
6: 'm' : 109
7: ' ' : 0
8: 'e' : 101
9: ' ' : 0
10: 's' : 115
11: ' ' : 0
12: 'h' : 104
13: ' ' : 0
14: ' ' : 32
15: ' ' : 0
16: 'R' : 82
17: ' ' : 0
18: 'e' : 101
19: ' ' : 0
20: 's' : 115
21: ' ' : 0
22: 'h' : 104
23: ' ' : 0
24: 'a' : 97
25: ' ' : 0
26: 'm' : 109
27: ' ' : 0
28: 'm' : 109
29: ' ' : 0
30: 'i' : 105
31: ' ' : 0
32: 'y' : 121
33: ' ' : 0
34: 'a' : 97
��H i m e s h R e s h a m m i y a
但在Windows资源管理器中,它显示正确的“Himesh Reshammiya”。
如何在java中获取正确的String,或者解码此字符串的任何解决方案?
我认为这可能是一些字符编码。提前致谢
答案 0 :(得分:1)
我猜测该库不支持UTF-16编码的文本,这似乎是(输出中列出的前两个字符是BOM)。
您应该使用此处列出的库之一: http://id3.org/Implementations
通过Java查看,这可能是一个很好的: https://github.com/mpatric/mp3agic
它说它在页面上支持Unicode。
答案 1 :(得分:0)
可能的解决方法:
replaceAll("\\s","")
这将删除所有空格和不可见字符。
答案 2 :(得分:0)
3:'':0我的问题就是这个问题吗?
将这个''char(没有空格)放在一个新的Integer()中,它必须等于0。
答案 3 :(得分:0)
使用mp3agic .. 这很棒..... http://mpatric.github.io/mp3agic/