如果我将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()
而不是BufferedReader
或InputStreamReader
类引发的)。