关于linux系统中讲utf8编码的字符串转换成gbk编码的字符串的问题

withfox 2011-10-14 03:17:10
一个简单的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格式呢?

...全文
766 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2011-10-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 withfox 的回复:]
writer2.write(sendCodeMessage1);
[/Quote]
直接写
writer2.write(message );
好了。
记得看文本的时候,用GB编码来看。
lk519186921 2011-10-15
  • 打赏
  • 举报
回复
我写过一个下载的要new String(name.getBytes(),"GBK")这种方法和URLDecoder中的decoder方法两个联合使用才有效,楼主可以在你的程序里面试试
lk519186921 2011-10-15
  • 打赏
  • 举报
回复
Java里面有URLEncoder和URLDecoder两个类,是对编码进行设置的,你试试

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧