日期:2014-05-20  浏览次数:20865 次

关于linux系统中讲utf8编码的字符串转换成gbk编码的字符串的问题
一个简单的java程序,系统环境:linux,系统编码:utf-8,tomcat:URIEncoding="UTF-8"。关于编码转换的问题,代码如下(汉字是单数或者带有半角的符号),问题在最后,请各位大侠帮忙解决,别给我说用new String(getbytes(utf8),GBK),这个根本管用。

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文件和utf.txt文件显示一样的,没有乱码和破坏后边的xml格式呢?



------解决方案--------------------
我写过一个下载的要new String(name.getBytes(),"GBK")这种方法和URLDecoder中的decoder方法两个联合使用才有效,楼主可以在你的程序里面试试
------解决方案--------------------
探讨
writer2.write(sendCodeMessage1);