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的,安源格式读进来,然后再对源码转换成想要的编码就行
笔记mp3
最新推荐文章于 2024-12-06 11:13:58 发布