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的,安源格式读进来,然后再对源码转换成想要的编码就行