隨筆-200  評論-148  文章-15  trackbacks-0

          寫出來的文件用瀏覽器打開后都是亂碼。已經(jīng)在XML的最前面加上了
          <?xml version="1.0" encoding="UTF-8"?>
          而且瀏覽器的編碼也是UTF-8的,這就排除了瀏覽器的問題。
          再用VIM打開,發(fā)現(xiàn)用GB2312看是沒問題的,換成:set encoding=UTF-8以后開始亂碼
          這時我嘗試將字符串轉(zhuǎn)碼后寫入文件,但在UTF-8,GBK和ISO8859_1中間怎么轉(zhuǎn)也沒有用。
          忽然想起前幾天yiyayoyo同學(xué)和我提過Java寫文件默認(rèn)編碼的問題,于是開始google,發(fā)現(xiàn)我用的寫文件的方式無法指定編碼,于是換用另一種寫文件的方式指定UTF-8,遂搞定。代碼如下:

          老代碼:
          PrintWriter pw = new PrintWriter(new FileWriter(path));
          pw.print(content);
          pw.close();

          新代碼:
          FileOutputStream fos = new FileOutputStream(path);
          Writer out = new OutputStreamWriter(fos, "UTF-8");
          out.write(content);
          out.close();
          fos.close();

          順便抱怨一句,Java中寫文件的方式還真是多阿多……我等一兩年經(jīng)驗的小程序員看了都眼暈

          ?? 庫卡 說:
          ? 讀代碼也有編碼的問題,如果要讀取UTF-8的文件,應(yīng)采用如下方式覆蓋默認(rèn)編碼:
          ? FileInputStream fis = new FileInputStream(s);
          ? StringBuffer content = new StringBuffer();
          ? DataInputStream in = new DataInputStream(fis);
          ? BufferedReader d = new BufferedReader(new InputStreamReader(in, "UTF-8"));
          ? String line = null;
          ?? while ((line = d.readLine()) != null)
          ????????????????????? content.append(line + "\n");
          ? d.close();
          ? in.close();
          ? fis.close();

          posted on 2008-05-13 17:17 無聲 閱讀(732) 評論(1)  編輯  收藏 所屬分類: 職場生活

          評論:
          # re: 在Java中寫文件的中文問題[轉(zhuǎn)] 2009-03-11 23:32 | newer


          寫文件時為什么要加

          DataInputStream in = new DataInputStream(fis);

          下面的語句改成不也可以嗎?有什么特別含義嗎

          BufferedReader d = new BufferedReader(new InputStreamReader(fis, "UTF-8"));

            回復(fù)  更多評論
            
          主站蜘蛛池模板: 弋阳县| 德格县| 公安县| 永年县| 孙吴县| 江北区| 伊川县| 基隆市| 清流县| 楚雄市| 中超| 克东县| 晋江市| 平和县| 获嘉县| 海丰县| 青神县| 呈贡县| 渑池县| 乐山市| 册亨县| 平原县| 寿阳县| 房山区| 华池县| 铜川市| 伊春市| 张家川| 方城县| 疏勒县| 福鼎市| 四子王旗| 阿瓦提县| 库尔勒市| 肇州县| 确山县| 洪雅县| 乐都县| 阿拉善左旗| 洱源县| 叙永县|