Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解码使用jid3lib-0.5.4获取的ID3V2标记_Java_Character Encoding_Id3v2 - Fatal编程技术网

Java 如何解码使用jid3lib-0.5.4获取的ID3V2标记

Java 如何解码使用jid3lib-0.5.4获取的ID3V2标记,java,character-encoding,id3v2,Java,Character Encoding,Id3v2,我正在尝试使用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:

我正在尝试使用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();
        }
    }
}
但在Windows资源管理器中,它会显示正确的“Himesh Reshammiya”

如何在java中获得正确的字符串,或任何解码该字符串的解决方案

我想这可能是某种字符编码。提前感谢

可能的解决方法:

replaceAll("\\s","")

这将删除所有空白和不可见字符。

我冒昧地猜测库不支持UTF-16编码的文本,这似乎是(输出中列出的前两个字符是BOM)

您可能应该使用以下列出的库之一:

通过查看Java版本,这可能是一个很好的版本:


它说它在页面上支持Unicode。

3:'':0我看到的是你的问题吗

只需将这个“”字符(没有空格)放入一个新的整数()中,它必须等于0。

使用mp3agic。。 太棒了。。。。。

不删除NUL或unicode替换字符,只删除空白。
replaceAll("\\s","")