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

最的一个JAVA编码问题,我都要疯了,请大家帮我看看吧。
连续问了好几天的编码问题,也上网看了不少的帖子,自己想试一试编码的转换,所以写了一个程序试了一下,可弄到现在还是弄不明白是为什么?

说一下我的主要目的:
我用的是日文操作系统,我下了一个软件,里面有一个README.TXT文件,我一打开是乱码。于是在“控制面版”里把“区域和语言”设置了一下,重启机器,再打开一看是中文,于是我又改回日语,想写一个小程序在日语的语言环境下把这个文本的内容以中文的形式输出来。但试了一天,结果也不像我想的那样,源程序如下:
package   test.io;

import   java.io.BufferedInputStream;
import   java.io.BufferedWriter;
import   java.io.File;
import   java.io.FileInputStream;
import   java.io.OutputStreamWriter;

public   class   ChineseOutput   {
public   static   void   main(String[]   args)   throws   Exception{
//System.setProperty( "file.encoding ",   "gbk ");
File   file   =   new   File( "readme.txt ");
FileInputStream   fi   =   new   FileInputStream(file);  
BufferedInputStream   bis   =   new   BufferedInputStream(fi);
byte[]   bytes   =   new   byte[150];

bis.read(bytes);
System.out.write(bytes);
System.out.println( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ");
System.out.println();
System.out.println();


String   str   =   new   String(bytes, "gb18030 ");
OutputStreamWriter   osw   =   new   OutputStreamWriter(System.out, "gb18030 ");
BufferedWriter   bw   =   new   BufferedWriter(osw);
bw.write(str);
bw.flush();
System.out.println( "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ");
System.out.println();
System.out.println();

System.out.println(str);
System.out.println( "ccccccccccccccccccccccccccccccccccccccccccccccc ");
System.out.println();
System.out.println();
}
}
结果如一楼所示:

------解决方案--------------------
编码格式改为UTF-8看看
------解决方案--------------------
用IE浏览器选简体中文就可以看见了,在控制台DOS环境下看,估计没戏,除非你把系统语言换成中文.
------解决方案--------------------
InputStreamReader bis = new InputStreamReader(fi, "gb2312 ");
OutputStreamWriter osw = new OutputStreamWriter(System.out);
//可能控制台打不出来,让她显示在Label框吧