解决方案 »

  1.   

    如果需要GBK编码,那么你编码成GBK然后传过去不就行了?
    比如String a = "我爱中国"
    用GBK编码a.getBytes("GBK")不就得到对应的字节数据了你如果把编码过的数据再用GBK解码那当然是同样的字符,如果不是那岂不乱套了?
    比如new String(a.getBytes("GBK"), "GBK")当然还是"我爱中国"
      

  2.   

    package tansfer;import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;public class Transfer {
    public static void main(String[] args) {
    try {
    writeUTF8("testTransferUTF8.txt","UTF-8");
    File file = new File("testTransferGBK.txt");
    file.createNewFile();
    transfer();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static void transfer() throws Exception{
    BufferedReader in = new BufferedReader(
    new InputStreamReader(
    new BufferedInputStream(
    new FileInputStream("testTransferUTF8.txt")), "UTF-8"));
    String line;
    while((line = in.readLine())!=null){
    System.out.println(line.toString());
    writeGBK("testTransferGBK.txt","GBK",line);
    }
    in.close();
    }
    public static void writeGBK(String fileName,String cha,String content) throws Exception{
    PrintWriter out = new PrintWriter(
    new OutputStreamWriter(
    new BufferedOutputStream(
    new FileOutputStream(fileName,true)), cha));

    out.println(content);
    out.close();
    }

    public static void writeUTF8(String fileName,String cha) throws Exception{
    PrintWriter out = new PrintWriter(
    new OutputStreamWriter(
    new BufferedOutputStream(
    new FileOutputStream(fileName)), cha));

    out.println("测试第一行");
    out.println("测试第二行asdfg");
    out.println("测试第三行sasds");
    out.println("测试第四行斯蒂芬森");
    out.println("测试第五行斯蒂芬森sdf");
    out.close();
    }
    }
      

  3.   

    对方不会做gbk编码转换的,
    简单点说  要把UTF-8 的 "我爱中国" 转成 gbk的 "我爱中国"
      

  4.   

    byte[] bytes = "我爱中国".getBytes("GBK");
    把这个字节流发给他就行了
      

  5.   

    在Java里,字符都是Unicode编码的,所以"我爱中国"在Java里永远只有一种字符表示,至于UTF-8还是GBK,这些是编码方式,是一种对字符的编码方法,你只有编码后,才有UTF-8和GBK的区别,你用字符或者字符串表示的话,不存在他是UTF-8还是GBK编码的,因为你根本都没有编码,何来编码方式?我猜你大概是想用文本的方式把文字发送出去,然后你发现直接发送是乱码,所以就想当然地以为把这个文字“转换”为GBK编码就行了,但文字本身是不存在编码的,之所以你发送的是乱码,是因为你用了错误的编码方式发送,我猜你的代码大概是这样,首先取得一个OutputStream,然后架设一个Writer,可能是PrintWriter,可能是BufferedWriter,然后发送字符串,像下面这样。
    OutputStream out;
    PrintWriter writer = new PrintWriter(out);
    writer.write("我爱中国");
    writer.close();
    但问题是PrintWriter和BufferedWriter这样写都是直接使用系统默认编码方式,你的可能是UTF-8,所以就导致你用了错误的编码方式发送字符串。解决方法是,在创建Writer时指定字符集,而PrintWriter和BufferedWriter貌似不支持,所以你要用OutputStreamWriter。
    OutputStream out;
    OutputStreamWriter writer = new OutputStreamWriter(out, "GBK");
    writer.write("我爱中国");
    writer.close();
      

  6.   

    new String(str.getByte("UTF-8"), "gbk")这句话的含义是 1、将字符串str编码为UTF-8字节数组 // str.getByte("UTF-8")
    2、把这个字节数组当做GBK编码的数据,转换回字符 // new String(xxx, "gbk")结果是必定乱码
      

  7.   

    String ns=new String(s.getByte("unicode"),"GBK");
      

  8.   

    如楼上几位所述
    Java String是不存在UTF-8, GBK的
    Java的String就是一串文字(当然,底层是Unicode)
    只有当String <-----> byte[] 的时候,才会存在编码问题人家说你编码不对,估计你是用了Reader/Writer,你现在应该改用InputStream/OutputStream
    区别于Reader/Writer(字符流)读/写的是字符(char, String),Stream对应的是byte,你现在写的时候,把String变成对方要的byte发过去,方法即是outputStream.write(str.getBytes("GBK"));
      

  9.   

    byte[] bytes = "我爱中国".getBytes("GBK");
      

  10.   

    字符编码,指的是二进制的数据,不是Java对象。
    楼主的那个String变量,不是二进制数据,而是Java对象。
    所有的String对象,在Java语言里,都是Unicode编码的。
    GBK和UTF-8编码的数据,要看二进制数据,也就是byte数组。
    像5楼那样的写法,才算比较靠谱。
    编程方面来讲,可以有两种方式:
    第一种,面向二进制编程byte[] before = ...;//GBK数据
    String data = new String(before,"GBK");
    byte[] result = data.getBytes("UTF-8");
    第二种,面向字符编程,这个方式是处理大数据时用的,我就不写了。和6楼的意思差不多。
      

  11.   

    哦。楼主是UTF-8转GBK 。 我的代码是GBK转UTF-8 , 写反了,不好意思。楼主要调换一下编码方式。