(1)在中文Windows XP下,Eclipse下执行以下代码,为何指定了以utf-8编码写入文件,但生成的文件是仍然是ANSI的(GBK)? OutputStreamWriter fw = null;
try {
fw = new OutputStreamWriter(new FileOutputStream(
"d:/demandCode_char.txt"), "utf-8");
for (int c = 64; c <= 96; c++) {
fw.write(c);
}
System.out.println(fw.getEncoding());
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}(2)跟上面的代码类似,但输出的字符多,为何输出的文件是UTF-8格式的?此外,既然文件格式为UTF-8格式,为何里面很多字符都无法正常显示而都是问号呢? OutputStreamWriter fw = null;
try {
fw = new OutputStreamWriter(new FileOutputStream(
"d:/unicode_fullTable.txt"), "utf-8");
for (int c = 1; c <= 50000; c++) {
fw.write(c);
}
System.out.println(fw.getEncoding());
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}

解决方案 »

  1.   

    指定文件以UTF-8编码,但是系统默认以森么编码不知道。
      

  2.   

    那怎么能通过流设置所生成的文件的编码格式呢?第二个代码输出的文件为何是指定的UTF-8编码的文件?
      

  3.   

    对于java文件,MS默认采用的是GBK的编码格式~linux采用的是UTF-8所以编码格式的问题是很让人纠结的。。
      

  4.   

    我的意思是,为何两个代码都指定了utf-8编码,但最终生成的文件,一个是ANSI,一个是Utf-8的?
      

  5.   

    eclipse默认的配置好像不是GBK的吧,看一些那些设置是不是有些什么地方要改回GBK的
      

  6.   

    这个跟Elipse没关系吧,我主要说的是得到的文件的编码格式。
      

  7.   

    额,首先这和eclipse没有关系
    这和你的操作系统的字符集有关系,默认windows操作系统支持英文和中文以及一些其他国家的文字,但不可能全部支持的,也没有必要,特别是中国盗版的一些操作系统,有必要支持非洲一些国家的文字么,所以这些国家的文字是不能显示出来的,而显示的是?
    而你第二个程序打印的是
    for (int c = 1; c <= 50000; c++) {
           fw.write(c);
    }
    你可以看下中文的范围,这个范围里是可以显示出中文的,而你打印的这个范围包含了其他国家的文字,所以显示出了?
      

  8.   

    谢谢10楼的回复,这个我理解。但主要问题是:为何两个代码都指定了utf-8编码,但最终生成的文件,在中文Windows XP环境下,一个是ANSI,一个是Utf-8的?
      

  9.   

    我理解,两个文件都是保存为utf-8
    你可以用记事本打开,然后选择另存为,就可以看出是什么编码的
    至于第二个文件很多乱码,这是因为你写入的字节本身就没有意义。
    --signature------------------
    http://www.mowker.com/list/
      

  10.   

    我看到的是,一个是UTF-8,一个是ANSI,这就不对了把,毕竟代码中都指定了utf-8
      

  11.   

    怎么修改?这跟eclipse啥关系?