乱码

来源:互联网 发布:怎么学java软件开发 编辑:程序博客网 时间:2024/04/29 18:04

关于音频文件乱码的问题

修改framwork 可以,修改应用层也可以

下面的方法是应用层的方式

 

http://down.51cto.com/data/771152



//framwork for part of luanma
http://blog.csdn.net/hellofeiya/article/details/8568663

//framwork
http://blog.csdn.net/tanqiantot/article/details/7904306

//app
http://duanmumu.blog.163.com/blog/static/1911133502011109547434/



在扫描的时候没有进行转码,你要做的就是在扫描时进行转码,在你的播放器中不好进行操作
 所以可以参考修改framework的相关代码,修改如下:
frameworks/base/media/java/android/media/MediaScanner.java
 public void handleStringTag(String name, String value) {
                         //add by wll 2012.10.25 begin
             try{
                 if(value.equals(new String(value.getBytes("ISO-8859-1"), "ISO-8859-1"))) {
                     String result = new String(value.getBytes("ISO-8859-1"),"GBK");
                     value = result;
                 }
             } catch(Exception e){}


// two:

将你获取的Album、artist等字符串进行编码转换就Ok了public static String changeStringEncode(String content){ if (java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode(content)) {  //Log.d(TAG, "GB2312..."); } else if(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode(content)) {  //Log.d(TAG, "ISO-8859-1...");  try   {   content = new String(content.getBytes("ISO-8859-1"), "GBK搜索");  }   catch (UnsupportedEncodingException e)   {   // TODO Auto-generated catch block   e.printStackTrace();  } } else if(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(content)) {  //Log.d(TAG, "GBK..."); } else if(java.nio.charset.Charset.forName("UTF-8").newEncoder().canEncode(content)) {  //Log.d(TAG, "UTF-8..."); } else if(java.nio.charset.Charset.forName("UTF-16").newEncoder().canEncode(content)) {  //Log.d(TAG, "UTF-16..."); } return content;}


0 0