中文乱码一直是困扰着程序员的一个问题,网上搜了好多解决办法,都不尽人意,希望能找到高手呀问题:我是从音乐文件中用MediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE )这个方式,提取出音乐文件的Title,但是提取出来的中文,有的可以正常显示,有的则显示为乱码。看到网上有这样的解决方法: String test = new String(title.getBytes("ISO-8859-1"), "GBK");试验了一把,结果是:原来显示为乱码的,经过这个方法处理后能正常显示中文汉字了,但是,原来可以正常显示的那些汉字,被转换成乱码了。好像是直接从音乐文件中提取出来的这个中文的Title,本身的编码格式不确定,转换的时候就出现了这么怪异的现象。哪位高手知道这个问题该怎么解?求解答....注意:这不是jsp,也不是servlet,那种处理界面乱码的方法不适合。

解决方案 »

  1.   

    呵呵,你首先要搞清楚,你读取的文件是什么编码格式。你只所以会出现这种问题,是因为你读取的文件,编码不同,有的是UTF-8,有的是GBK,你的处理是String test = new String(title.getBytes("ISO-8859-1"), "GBK")
    这样所有的编码都转换成了GBK,如果你读取的文件是UTF-8编码,当然会报错。
      

  2.   

    不信你改成String test = new String(title.getBytes("ISO-8859-1"), "UTF-8")
    乱码的文件绝对倒过来。
      

  3.   

    大侠的意思,我明白。。我也知道问题就是 “是因为你读取的文件,编码不同,有的是UTF-8,有的是GBK”可是问题是,我不知道怎么判断我读取文件的编码格式呀。。
    我是对一堆的音乐文件,直接提取他的Title,怎么样判断我提取出来的字符串是哪种编码格式呢?求指教呀...
      

  4.   


    如何判断文件编码
    http://www.cnblogs.com/java0721/archive/2012/07/21/2602963.html你自己看下吧。