gbk编码的文字,包括数字,字母,汉字,特殊字符等,怎么转成utf-8编码的文字?

解决方案 »

  1.   

    不知所云的问题“gbk编码的文字”什么地方的文字?页面中?数据表中?文件中?
      

  2.   

    另外,你想通过 Java 来转,还是随便什么工具来转?反正我是没看懂你要具体问什么东西!
      

  3.   

    不知道这个是不是满足楼主同学的要求,nio的API不是很熟,代码写的不好看,将就看吧:package com.me.app;import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.ByteBuffer;
    import java.nio.CharBuffer;
    import java.nio.charset.Charset;
    import java.nio.charset.CharsetDecoder;
    import java.nio.charset.CharsetEncoder;/**
     * 将gbk编码的文件内容转换为UTF-8编码。 注意:此java源文件的编码应该设置成和转换后目标编码一职,即UTF-8
     * 
     * @author cherry
     * 
     */
    public class UTF8Converter {
        public static void main(String[] args) throws IOException {
            final Charset gbk = Charset.forName("GBK");
            final Charset utf8 = Charset.forName("UTF-8");        FileInputStream fis = new FileInputStream("/home/cherry/GBK.html");// 原始文件的编码为gbk        byte[] b = new byte[fis.available()];
            fis.read(b);
            System.out.println("转换前编码为gbk:\n" + new String(b, "gbk"));        CharsetDecoder gbkDecoder = gbk.newDecoder();
            CharsetEncoder utf8Encoder = utf8.newEncoder();        ByteBuffer in = ByteBuffer.wrap(b);
            CharBuffer out = gbkDecoder.decode(in);
            ByteBuffer result = utf8Encoder.encode(out);
            System.out.println("转换后编码为UTF-8:\n" + new String(result.array(), "utf-8"));
        }
    }
      

  4.   

    先获得byte数组GBK的然后在new一个String加上utf-8
      

  5.   

    先用一个使用 GBK 编码的 java.io.Reader 读入,
    再用一个使用 UTF-8 编码的 java.io.Writer 写出就可以了。BufferedReader in = new BufferedReader(
            new InputStreamReader(new FileInputStream("filename.txt"), "GBK"));
    PrintWriter out = new PrintWriter(new BufferedWriter(
            new OutputStreamWriter(new FileOutputStream("foo.out"), "UTF-8")));String line;
    while ((line = in.readLine()) != null) {
        out.println(line);
    }in.close();
    out.close();
      

  6.   

    C++语言版中: SIZE_T   nLen   =   wcslen(text);   CString str, str1; for (SIZE_T i = 0; i < nLen; i++)
    {
    if (wcsrchr(_T("][)(}{*,:=;...#"), text[i])) //特殊字符
    {
    str.Format(_T("%%%x"), text[i]);
    str1 += str;
    }
    else
    {
    if (text[i] >= 0x0800 && text[i] <= 0xFFFF) //三字节
    {
    strTmp[i*3] = 224 + (0x0f&(unsigned char)(text[i]>>12)) ; //第一个字节
    str.Format(_T("%%%02x"), strTmp[i*3]);
    str1 +=str;
    strTmp[i*3 + 1] += 128 + (0x3f&(unsigned char)((text[i]) >> 6));//第二个字节
    str.Format(_T("%%%02x"), strTmp[i*3+ 1]);
    str1 +=str;
    strTmp[i*3 + 2] +=128 + (0x3f&(unsigned char)(text[i])); //第三个字节
    str.Format(_T("%%%02x"), strTmp[i*3+ 2]);
    str1 +=str;
    }
    else //非三字节
    {
    str1 += text[i];
    } }
    }