比如说,现在有一个文档是GBK编码,写了一大串中文
想在我想把它转成UTF-8的编码,怎么转。我是这样做的:
1.用BufferedReader从a.txt里读一行放到String s1里头
2.String s2 = new String(s1.getBytes("GBK"), "UTF-8");
3.用BufferedWriter写如s2到b.txt里头
这样,得到的b.txt依然是乱码。
导入到Eclipse里头,设置其编码为UTF-8,依然乱码
怎么回事?
求解~~~

解决方案 »

  1.   

    你可以先用GBK读取出来,再用UTF-8写到文件里。就不会出现乱码了。import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;public class Test {
    public static void main(String[] args) throws IOException {
    File file=new File("d:"+File.separator+"a.txt");
    File outFile=new File("d:"+File.separator+"b.txt");
    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
    String line=br.readLine();
    while (line!=null) {
    bw.write(line);
    System.out.println(line);
    line=br.readLine();
    }
    bw.flush();
    bw.close();
    br.close();
    }
    }
      

  2.   


    public class TestCodingConvert {
        public static void main(String[] args) throws IOException {
             BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("c:/old.txt"), "gbk"));
             //BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/new.txt"), "gbk"));
             //对中文来说 以gbk形式写入实际字节数将会 比 utf-8形式写入 小, 但是占用空间一样 ,你可以右击两个文件查看属性
             BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/new.txt"), "UTF-8"));
            String line=null;
            while ((line=br.readLine())!=null) {
                bw.write(line);
                bw.newLine();
            }
            bw.close();
            br.close();
        }
    }
      

  3.   

    我学的不深,有点2疑惑:
    1  一个中字在 GBK中会占2个字节,在UTF-8中占3个字节,还是没弄懂怎么转的,
    2  以上代码 在br.readLine()时GBK又转为ISO8859-1;这样的话,在开始文档转码时为什么不用
    ISO8859-1
      

  4.   

    用记事本或者其他什么文本编码工具打开,另存为 UTF-8 格式的就可以了
      

  5.   

    以gbk形式写入实际字节数将会 比 utf-8形式写入 小, 但是占用空间一样 NTFS文件系统最小簇为4KB,一个文本文档就算只写一个字也是占用4KB的空间
      

  6.   

    这个最小簇怎么理解呢?一个txt文档保存,大小并没有限定,可以是2kb也可以是别的啊