UnsupportedEncodingException

UnsupportedEncodingException

如果我将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行为空行。

最佳答案

仅当不支持您传递给UnsupportedEncodingException的字符集名称时,才会抛出Charset.forName()。它与流的内容无关(异常声明是由Charset.forName()而不是BufferedReaderInputStreamReader类引发的)。

09-13 11:25