在java中获取UTF8字符集而不是ASCII

时间:2015-09-11 12:23:51

标签: java encoding utf-8 character-encoding

我正在以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();
    }
    }

1 个答案:

答案 0 :(得分:3)

删除System.setProperty行,他们没用,也不做你想的。

由于您未在InputStreamReader构造函数中指定编码,因此使用平台默认值,在您的情况下似乎为UTF-8。将"US-ASCII"作为参数添加到InputStreamReader

InputStreamReader 猜测编码。它使用平台默认值,除非您指定不同,并且您应该始终明确指定编码以确保程序在不同平台上的工作方式相同。