比如说,现在有一个文档是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,依然乱码
怎么回事?
求解~~~
想在我想把它转成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,依然乱码
怎么回事?
求解~~~
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();
}
}
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();
}
}
1 一个中字在 GBK中会占2个字节,在UTF-8中占3个字节,还是没弄懂怎么转的,
2 以上代码 在br.readLine()时GBK又转为ISO8859-1;这样的话,在开始文档转码时为什么不用
ISO8859-1