public static void main(String[] args) {
String str="字符串编码转换";
try {
byte[] temp=str.getBytes("utf-8");//这里写原编码方式
String newStr=new String(temp,"gbk");//这里写转换后的编码方式
System.out.println(newStr);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
你试一下这个

解决方案 »

  1.   

    读取时使用 UTF-8,写入时使用 GBK 编码就可以了。JAVA 使用的是 UNICODE,内部可以根据不同的编码字符集进行转换。PS:1 楼的做法是不可行的。
      

  2.   

                SAXReader reader = new SAXReader();
                Document document = reader.read(new Reader(), "GBK");
      

  3.   

    这个报文我是直接在程序内部写好的,没有写成xml文件啊,我想的是直接写成xml的字符串,直接就做签名,但是签名的报文必须是gbk编码的,否则那边收到报文是乱码
      

  4.   

    这个报文我是直接在程序内部写好的,没有写成xml文件啊,我想的是直接写成xml的字符串,直接就做签名,但是签名的报文必须是gbk编码的,否则那边收到报文是乱码
      

  5.   

    这个报文我是直接在程序内部写好的,没有写成xml文件啊,我想的是直接写成xml的字符串,直接就做签名,但是签名的报文必须是gbk编码的,否则那边收到报文是乱码
      

  6.   

    public static void main(String[] args) {
            String str="字符串编码转换";
            try {
              byte[] temp=str.getBytes("utf-8");//这里写原编码方式
                byte[] newtemp=new String(temp,"utf-8").getBytes("gbk");//这里写转换后的编码方式
                String newStr=new String(newtemp,"gbk");//这里写转换后的编码方式
                System.out.println(newStr);
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
      

  7.   


    String a="这里是你在程序内部写好的什么报文了";
    String b=new String(a.getBytes(),"utf-8");//这里重新生成一次String
    os.write(b.getBytes("gbk"));//os(这是OutputStream)写入文件楼主你试试这个  不行的话自己多试试别的
      

  8.   

    这个方法不行,我在http://topic.csdn.net/u/20111014/15/d4bbf15f-25c7-4775-be01-e9c4b91ee8cd.html这个帖子里有更详细的问题
      

  9.   

    我在http://topic.csdn.net/u/20111014/15/d4bbf15f-25c7-4775-be01-e9c4b91ee8cd.html这个帖子里有更详细的问题,分数也增加了,如果你能帮我解决问题,分数好说
      

  10.   

    老兄,这个我试了,但是还是破坏了报文,在linux下我做了一下测试
    String message = "<?xml version=\"1.0\" encoding=\"GBK\"?><stream>PRODUCTNAME>转码·编码疯了啊</PRODUCTNAME>stream>";String sendCodeMessage = new String(message.getBytes(),"UTF-8");
    File file = new File("/usr/signTest/test.txt");  
    Writer writer = new OutputStreamWriter(new FileOutputStream(file));  
    writer.write(message);  
    writer.flush();
    writer.close();  
    File file1 = new File("/usr/signTest/utf.txt");  
    Writer writer1 = new OutputStreamWriter(new FileOutputStream(file1), "UTF-8");  
    writer1.write(sendCodeMessage);  
    writer1.flush();
    writer1.close();
    String sendCodeMessage1 = new String(message.getBytes(),"GBK");
    File file2 = new File("/usr/signTest/gbk.txt");  
    Writer writer2 = new OutputStreamWriter(new FileOutputStream(file2), "GBK");  
    writer2.write(sendCodeMessage1);  
    writer2.flush();
    writer2.close();  生成的三个文件内容分别为:test.txt文件:<?xml version="1.0" encoding="GBK"?><stream><PRODUCTNAME>转码·编码疯了啊</PRODUCTNAME></stream>
    utf.txt文件:<?xml version="1.0" encoding="GBK"?><stream><PRODUCTNAME>转码·编码疯了啊</PRODUCTNAME></stream>
    gbk.txt文件:<?xml version="1.0" encoding="GBK"?><stream><PRODUCTNAME>杞爜路缂栫爜鐤簡鍟?/PRODUCTNAME><PRODUCTCODE></stream>
    在gbk.txt文件中xml的格式被破坏了,也就是说即使在程序中直接做编码的转换也会破坏报文,那该如何解决呢?
      

  11.   


    最后改了一下linux的编码 修改方法:vi /root/.bash_profile
    export LC_ALL="zh_CN.GBK"
       export LANG="zh_CN.GBK"
       export LANG=en_US不知道怎么弄,linux默认编码是utf-8的,然后utf-8到GBK转码怎么都不行,但是可以GBK到utf-8转码