InputStreamReader不抛出UnsupportedEncodingException

时间:2014-05-09 11:22:45

标签: java character-encoding

如果我将UTF-16编码文件传递给以下代码,那么我是否会收到UnsupportedEncodingException?

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF-8")));
        String ip;
        while ((ip = br.readLine()) != null){
            //do something
        }
    } catch (UnsupportedEncodingException use) { 
        //when can I expect an exception?
    }

我用UTF-16文件尝试了这个,但我没有得到任何异常。读者不知何故试图读取所有导致它读取比预期更多的字符。例如,在一个包含3行的样本文件中,阅读器读取5行,其中2行是空行。

1 个答案:

答案 0 :(得分:3)

如果不支持传递给UnsupportedEncodingException的字符集的名称,则仅引发{p> Charset.forName()。它与流的内容无关(声明Exception被Charset.forName()而不是BufferedReaderInputStreamReader类抛出)。