¿Leyendo caracteres unicode extraños en Java?

Tengo el siguiente archivo de texto:

El archivo se guardó con codificación utf-8.

Usé el siguiente código para leer el contenido del archivo:

FileReader fr = new FileReader("f.txt");
BufferedReader br = new BufferedReader(fr);
String s1 = br.readLine();
String s2 = br.readLine();
System.out.println("s1 = " + s1.length());
System.out.println("s2 = " + s2.length());

La salida

s1 = 5

s2 = 4

Entonces intenté usars1.charAt(0); para obtener el primer personaje de s1 y fue'' carácter (en blanco). Es por eso que s1 tiene la longitud de 5. Incluso si intenté usars1.trim(); su longitud aún 5. ¿No sé por qué sucedió eso? Funcionó correctamente si el archivo se guardó con codificación ASCII.

Respuestas a la pregunta(10)

Su respuesta a la pregunta