程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 文件讀寫亂碼筆記

文件讀寫亂碼筆記

編輯:J2ME

最近在做音樂歌詞讀寫的項目的時候,遇到一個很煩的問題,我們在讀取保存在本地的歌詞的時候出現亂碼,在有的手機上面沒有這個問題,在有的手機上就有這個問題。當時是我負責這塊,郁悶了半天,專門為這個問題,查了各個手機的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();

這樣子就沒有什麼亂碼問題了。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved