(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();
}
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();
}
这和你的操作系统的字符集有关系,默认windows操作系统支持英文和中文以及一些其他国家的文字,但不可能全部支持的,也没有必要,特别是中国盗版的一些操作系统,有必要支持非洲一些国家的文字么,所以这些国家的文字是不能显示出来的,而显示的是?
而你第二个程序打印的是
for (int c = 1; c <= 50000; c++) {
fw.write(c);
}
你可以看下中文的范围,这个范围里是可以显示出中文的,而你打印的这个范围包含了其他国家的文字,所以显示出了?
你可以用记事本打开,然后选择另存为,就可以看出是什么编码的
至于第二个文件很多乱码,这是因为你写入的字节本身就没有意义。
--signature------------------
http://www.mowker.com/list/