GBK转UTF-8的方法 JAVA

原创 2011年01月10日 19:48:00

最近在做一个能分析网站新闻的网络爬虫,对方要求中文的新闻信息用UTF-8存储。可是国内大部分新闻网站的网页源代码里的中文都是GB2312 的,所以必须转成UTF-8.在网上搜了很多方法,有人自己写的,有人用String newcontent=new String(content.getBytes("GBK"),"UTF-8");这种方法,可是试过之后,好好的汉字都变成了乱码。于是到搜了一下英 文网页,很快就找到了解决之道。缺点是不是直接在内存中进行转换,而是把以GBK编码存储的文件转换成以UTF-8编码存储的文件。不管怎么说,能解决我的问题就好。(GB2312是GBK的子集,解决了GBK就解决了GB2312,在我这个项目里,由于GB2312不能正常显示某些不常用字,所以我使用了GBK)

英文网址如下,有兴趣的朋友可以看一下:http://www.chinesecomputing.com/programming/java.html

我把代码贴过来。convert(String infile, String outfile, String from, String to)函数就是转换函数,其中infile是要转换的文件路径,outfile是转换后存储的文件路径,from是infile的字符集,对应我的项目就 是GBK, to是outfile的字符集,对应我的项目就是UTF-8.
注意infile和outfile不能为相同路径,否则最后转换出的文件会是空文件。

import java.io.*;
public class inputtest {
  public static void main(String[] args) {
    String outfile = null;

    try { convert(args[0], args[1], "GBK", "UTF8"); } // or "GB2312" or "BIG5"
    catch (Exception e) {
      System.out.print(e.getMessage());
      System.exit(1);
    }
  }

  public static void convert(String infile, String outfile, String from, String to)
       throws IOException, UnsupportedEncodingException
  {
    // set up byte streams
    InputStream in;
    if (infile != null) in = new FileInputStream(infile);
    else in = System.in;
    OutputStream out;
    if (outfile != null) out = new FileOutputStream(outfile);
    else out = System.out;

    // Use default encoding if no encoding is specified.
    if (from == null) from = System.getProperty("file.encoding");
    if (to == null) to = System.getProperty("file.encoding");

    // Set up character stream
    Reader r = new BufferedReader(new InputStreamReader(in, from));
    Writer w = new BufferedWriter(new OutputStreamWriter(out, to));

    // Copy characters from input to output.  The InputStreamReader
    // converts from the input encoding to Unicode,, and the OutputStreamWriter
    // converts from Unicode to the output encoding.  Characters that cannot be
    // represented in the output encoding are output as '?'
    char[] buffer = new char[4096];
    int len;
    while((len = r.read(buffer)) != -1)
      w.write(buffer, 0, len);
    r.close();
    w.flush();
    w.close();
  }

}


转换后可以用“秀丸”这个文字编辑工具查看转换前后文字的编码。

 

有时候中文网页难以搜到答案时,去一下英文网页,也许答案马上就出来了~因此,学好英文是必要的。

用java程序将GBK字符转成UTF-8编码格式

上网查找一下 用java程序将GBK字符转成UTF-8编码格式的代码,发现全是C++ 写的,而且很烦琐,现在自己写了一个java的,以供参考。UTF-8 编码介绍UTF-8 编码是一种被广泛应用的编码...
  • wangjichen_1
  • wangjichen_1
  • 2006年08月04日 18:02
  • 6039

[JAVA] GBK转UTF-8汉字乱码 发现与解决

就在昨晚想写一个爬饿了么查找最适合满减价格的外卖,我的步骤是先把网页保存下来先实验正则匹配的程序, 文件打开的方式是 BufferedReader br = new BufferedReader(ne...
  • u010940780
  • u010940780
  • 2015年04月17日 22:40
  • 3112

java中gbk转utf-8

public class GbkToUtf8 { public static void main(String[] args) throws IOException { File filein...
  • cow__sky
  • cow__sky
  • 2015年01月21日 10:14
  • 1700

java字符集转换程序(GBK到UTF-8)

  • 2008年12月16日 19:57
  • 3KB
  • 下载

JAVA GBK 字符串转为utf-8

String str = "µâº£´¼×¢ÉäÒ"; byte[] fullByte1 = new String(str.getBytes("ISO-8859-1"), "GBK") ...
  • yangxiaojun9238
  • yangxiaojun9238
  • 2013年01月08日 21:58
  • 6782

java GBK字符转换成为UTF-8编码字符

import java.util.HashMap; import java.util.Map; /** * 创建日期: 2014-04-18 10:36:25 * 作者: 黄飞 * mail:h...
  • hfmbook
  • hfmbook
  • 2014年07月14日 17:04
  • 5054

批量将Java源代码文件的编码从GBK转为UTF-8

  • 2016年07月22日 15:03
  • 99KB
  • 下载

java将GBK转为utf-8

Java使用UNICODE编码,可以在读文件时使用GBK,此时内存中存在的是GBK转化为UNICODE储存的,写出时采用UTF-8写出(UNICODE转化为UTF-8)。 同理:我们可以利用java的...
  • qq_32626543
  • qq_32626543
  • 2017年04月08日 14:44
  • 287

java gbk转utf-8乱码问题

最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK编码,对方公司是UTF-8编码。因此,我需要将GBK编码数据转换成UTF-8编码数据,这样对方网站才不会乱码。最简单的方法是将HttpCl...
  • baidu_18607183
  • baidu_18607183
  • 2016年09月14日 13:53
  • 1725

JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考。为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问...
  • qinysong
  • qinysong
  • 2006年09月05日 12:18
  • 49456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GBK转UTF-8的方法 JAVA
举报原因:
原因补充:

(最多只允许输入30个字)