六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 54|回复: 0

文件读写乱码笔记

[复制链接]

升级  50.67%

34

主题

34

主题

34

主题

秀才

Rank: 2

积分
126
 楼主| 发表于 2013-1-15 03:09:27 | 显示全部楼层 |阅读模式
最近在做音乐歌词读写的项目的时候,遇到一个很烦的问题,我们在读取保存在本地的歌词的时候出现乱码,在有的手机上面没有这个问题,在有的手机上就有这个问题。当时是我负责这块,郁闷了半天,专门为这个问题,查了各个手机的api支持的字符集,可是最后没有很好的解决这个问题,先是直接读到一个byte[]里面再new (byte[],"UTF-8")乱码问题大大的有,后来在读出的时候也是将流转化为DataInputStream,再去readUTF(),还是乱码。
上面是小插曲,其实解决这样子的问题很简单,只要控制写和读的一致性就没有问题了。
比如:
写操作
public synchronized void saveLyricFile(String data, String name) {
        if (data == null || data.length() == 0) {
            return;
        }
        OutputStream os = null;
        DataOutputStream dos = null;
        FileConnection fc = null;
        try {
            fc = (FileConnection) Connector.open(
                "file:///" + musicSavePath+ name);
            if (fc.exists()) {
                //存在就不保存了
                fc.close();
                fc = null;
                return;
            }
            fc.create();
            os = fc.openOutputStream();
            dos = new DataOutputStream(os);
            dos.writeUTF(data);
            dos.close();
            os.close();
            fc.close();
            fc = null;
        } catch (IOException ex) {
            try {
                fc.close();
                dos.close();
                os.close();
                fc.close();
                fc = null;
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
            ex.printStackTrace();
        } finally {
            try {
                dos.close();
                os.close();
                fc.close();
                fc = null;
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
        }
    }
在读保存的文件的时候就可以直接
 DataInputStream dis = new DataInputStream(is);
 String lrcText = dis.readUTF();
这样子就没有什么乱码问题了。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表