2

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エクスプローラーでは、正しい「HimeshReshammiya」が表示されます。

Javaでこの正しい文字列を取得するにはどうすればよいですか、またはこの文字列をデコードするためのソリューションはありますか?

これは文字エンコードかもしれないと思います。前もって感謝します

4

4 に答える 4

1

ライブラリがUTF-16でエンコードされたテキストをサポートしていないと推測するのは危険です(出力にリストされている最初の2文字はBOMです)。

おそらくここにリストされているライブラリの1つを使用する必要があります:http: //id3.org/Implementations

Javaのものを見ると、これは良いものかもしれません: https ://github.com/mpatric/mp3agic

ページ上でUnicodeをサポートしているとのことです。

于 2013-01-13T09:23:52.313 に答える
0

考えられる回避策:

replaceAll("\\s","")

これにより、すべての空白と非表示の文字が削除されます。

于 2013-01-13T09:23:26.530 に答える
0

3:'':0あなたの問題は私が見るようにこれですか?

この''char(スペースなし)を新しいInteger()に入れるだけで、0に等しくなければなりません。

于 2013-10-09T13:13:30.003 に答える
0

mp3agicを使用してください..その素晴らしい..... http://mpatric.github.io/mp3agic/

于 2013-10-19T12:31:02.100 に答える