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();
}
}
你试一下这个
Document document = reader.read(new Reader(), "GBK");
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();
}
}
String a="这里是你在程序内部写好的什么报文了";
String b=new String(a.getBytes(),"utf-8");//这里重新生成一次String
os.write(b.getBytes("gbk"));//os(这是OutputStream)写入文件楼主你试试这个 不行的话自己多试试别的
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的格式被破坏了,也就是说即使在程序中直接做编码的转换也会破坏报文,那该如何解决呢?
最后改了一下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转码