Encoding And Decoding With Charset

java charset covert 编码转换
http://hi.baidu.com/tianyuanfeige/item/ad3c8bc741e7b57088ad9e50

方法一:

public class CharsetConvert {
public static void main(String[] args) throws IOException {

File infile = new File("gbk");我们的输入文件是gbk编码,这是win下的通常编码(中国)。
File outfile = new File("utf8");我们的输出文件是utf8编码,这是linux下的通用编码(可配置)。

Reader in = new InputStreamReader(new FileInputStream(infile), "gbk");
Writer out = new OutputStreamWriter(new FileOutputStream(outfile), "UTF-8");

int c;

while ((c = in.read()) != -1){
out.write(c);}
in.close();
out.close();
}
}

方法二:

我认为原文章中的说明不正确
其中源文件的内码的确是与OS相关,但是一旦通过编译,就可以视作Java的内码——Unicode,只是Java内码Unicode与gbk编码转换,而不存在文中所说的UTF-8转换的问题。

import java.nio.charset.Charset;
public class CharsetConvert{
public static void main(String[] arg){
String stringToBeConvert= new String("编码转换");
这里的“编码转换”四个字的编码在不同的操作系统上是不一样的。
//win简体版下是gbk编码,linux下通常是utf8。现在,我们假定这个字符串的编码是utf8
Charset charset = Charset.forname("gbk");
CharsetEncoder encoder = charset.newEncoder();
这是一个utf8到gbk的编码器
CharsetDecoder decoder = charset.newDecoder();//这是一个gbk到utf8的解码器
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(stringToBeConvert));
//若stringToBeConvert字符串的编码是utf8,则我们把它从utf8编码为gbk。否则,出现乱码。
//String result = bbuf.asCharBuffer().toString();
CharBuffer cbuf = decoder.decode(bbuf);
//我们把字符串从gbk解码为utf8。
String result = cbuf.toString();
}
}