我正在以ASCII Charset格式创建文本文件。再次阅读时,其中 给UTF8 Charset。为什么它给UTF8 Charset而不是ASCII?
public static void fileStreamWriter() throws IOException {
Charset cs = Charset.forName("US-ASCII");
System.setProperty("file.encoding", "US-ASCII");
String text = "ABCDEFGHIJKLMNOP";
String stCr = new String(text.getBytes());
Writer writer = new OutputStreamWriter(new
FileOutputStream("C:/upload/FItest"), cs);
try {
writer.write(stCr);
writer.flush();
} finally {
writer.close();
}
}
public static void readEncodingCharset(String path) throws IOException
{
System.setProperty("file.encoding", "US-ASCII");
FileInputStream fis = null;
InputStreamReader isr = null;
String s;
try {
fis = new FileInputStream("C:/upload/FItest");
isr = new InputStreamReader(fis);
s = isr.getEncoding();
System.out.println("Charset Encoding type : "+s);
} catch (Exception e) {
e.printStackTrace();
} finally {
fis.close();
isr.close();
}
}
答案 0 :(得分:3)
删除System.setProperty
行,他们没用,也不做你想的。
由于您未在InputStreamReader
构造函数中指定编码,因此使用平台默认值,在您的情况下似乎为UTF-8
。将"US-ASCII"
作为参数添加到InputStreamReader
。
InputStreamReader
不猜测编码。它使用平台默认值,除非您指定不同,并且您应该始终明确指定编码以确保程序在不同平台上的工作方式相同。