笔记mp3

mp3



fis = new FileInputStream(file);
            //字节数组声明定义
            b = new byte[1024];
            //读取文件内容放入字节数组
            fis.read(b);
            //把字节数组转换成字符串
            Text_of_output = new String(b);           
            //显示读取的文件内容
            et.setText(Text_of_output);

这样子在读我adb push的.txt文件(有中文)时,里面的中文读出来是乱码,这是怎么一回事呢,应该怎样解决哎呀?
Android的中文乱码问题搞得我好头痛呀,请大侠帮忙~~
我改成用FileReader读文件流也乱码,
fr = new FileReader(file);
           BufferedReader br = new BufferedReader (fr);
            String s = new String("GB2312");
            while ((s = br.readLine() )!=null) {
                   et.setText(s);
                }

烦呀


打开文件的时候设置编码

InputStreamReader  read = new InputStreamReader (new FileInputStream(f),"UTF-8");
我试过了,改成utf-8的编码也不能成功,后来我网上查了一个,得到提醒,改成unicode编码可以成功

遍历sdcard的中文文件.. file.getName()咋处理.

读取文件名的每个文字,查看ASC码值,如果小于0就是中文。在android上没试过,VBA上是这样的。应该可以成功。



Android音乐播放一个很大的问题是不能批量添加歌曲到播放列表(playlists),一首一首地加非常麻烦,所以我想如果有播放器支持导入千千静听的音乐播放列表就好了,询问一圈无果,结果后来发现根本不需要,Android音乐库可以像搜索mp3那样自动搜索m3u播放列表,这样只要通过 “千千静听”或者自己手动创建好列表,传到SD卡里就可以了,下面就简单说一下创建的方法:

  一、使用“千千静听”等播放器创建Android音乐播放列表
1.打开千千静听,把SD卡上的歌曲拖动到播放列表
2.在列表上点右键,保存列表为m3u格式
3.用记事本打开刚才创建的m3u文件,文件——另存为——编码选utf-8——保存
4.将保存后的文件传到卡里
OVER

  二、手动创建Android音乐播放列表
  1.新建txt文档,在里面一行填一个音乐文件名,比如“纯音乐.txt”,内容

  旅立ち(「はるかな旅」ストリングス·ヴァージョン).mp3
Bamboo Dance.mp3
Summer.mp3

2.另存为,编码选utf-8
3.重命名文件为“纯音乐.m3u”,传到卡里
OVER

  几点说明:

1.Android的播放列表不需要填歌曲路径,因为系统自动扫描所有音频文件,只要有文件名就可以对号入座,所以虽然千千静听的列表中包含了很多信息,但作用和手动创建的只有文件名的列表是一样的。
2.m3u文件也没有要求路径,传到卡上就行,不过推荐放在音乐文件夹或playlists文件夹下。
3.m3u文件名没有英文大小写限制。
4.m3u文件一定保存为utf-8编码,不然不能识别中文。
5.删除播放列表会相应删除卡里的m3u文件。
6.尽量不要有同名的音乐文件,否则m3u可能不知道你想听哪一首。



获取文件名的代码:
if(Intent.ACTION_VIEW.equals(action))
{
fileName=intent.getDataString();

Log.v(TAG,"Uri.decode fileName="+fileName);

try {
String newFileName=new String(fileName.getBytes(),"ISO8859_1");//
Log.v(TAG,"new String(fileName.getBytes(),'ISO8859_1'); newFileName="+newFileName);
} catch (UnsupportedEncodingException e) {
}

}
进行编码转换后没有用。查Android文档。发现getDataString()函数得到的是Uri,然后直接转换成String;查Uri类,找到一个decode函数。用之,正常。
正确代码为:fileName=Uri.decode(intent.getDataString());正确获取中文。(Log输出是乱码)。注意直接得到的fileName会带file://前缀


我在windows桌面新建的文件夹,用ultraISO直接丢进img镜像文件里,不会乱码啊~~~

还有,可能有人在用adb push 时是不能push中文的文件的,但是我确实是实现了,所以这一点是没有疑问的,我是使用别处的一个image,替换了google标准的image才能push的。但这不是重点,重点是为什么会有这样的差异呢?

然后,我发现,通过USB连接传到G2的文件名并没有变,而且所有上传的文件都存放在SD卡中,在模拟器中SD卡镜像是一个img文件。于是我关闭模拟器(一定要关闭,不然无法保存修改后的img文件),通过UltraISO打开模拟器目录中sdcard.img,将文件直接拖到镜像文件中,然后保存。重启模拟器,问题解决了。得意中。。。。。。

“测试”用 URLEncoder.encode(str,"utf-8");转码后也不行,怎么拼凑 URL 找到服务器上的中文文件.
URLEncoder.encode("测试", "UTF8")  这样对文件名的中文部分做转码,然后做拼接。


Android中文乱码彻底解决

以下是我研究的成果,希望对您有帮助:
  Java代码
  sb = new StringBuffer();
  HttpEntity entity = response.getEntity();
  InputStream is = entity.getContent();
  BufferedReader br = new BufferedReader(
  new InputStreamReader(is,"GB2312"));
  String data = "";
  while ((data = br.readLine()) != null) {
  sb.append(data);
  }
  String result = sb.toString();
  sb = new StringBuffer();
  HttpEntity entity = response.getEntity();
  InputStream is = entity.getContent();
  BufferedReader br = new BufferedReader(
  new InputStreamReader(is,"GB2312"));
  String data = "";
  while ((data = br.readLine()) != null) {
  sb.append(data);
  }
  String result = sb.toString();
  Java代码
  //下面的是多余的代码,平台会按照默认编码读数据,谢谢melode11和eleda指点 result = new String(result.getBytes(),"UTF-8");
  //下面的是多余的代码,平台会按照默认编码读数据,谢谢melode11和eleda指点 result = new String(result.getBytes(),"UTF-8");
  我解释一下,
  Java代码
  BufferedReader br = new BufferedReader(
  new InputStreamReader(is,"GB2312"));
  BufferedReader br = new BufferedReader(
  new InputStreamReader(is,"GB2312"));
  是读取要改编码的源,源的格式是GB2312的,安源格式读进来,然后再对源码转换成想要的编码就行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值