Ci sono diverse questioni.
Innanzitutto il problema non è a livello di readLine() di BufferedReader. BufferedReader si aspetta di ricevere già "caratteri" che presume siano corretti.
La questione è che FileReader legge i byte dal file e li interpreta usando in modo fisso il charset (set di caratteri) predefinito della piattaforma. Che se sei su un sistema Windows, perlomeno qui in italia, il charset predefinito del sistema generalmente è il WIN-1252. Che NON è detto sia appropriato per quel file.
Quindi quello che dovresti usare è FileInputStream poi incapsulato in un InputStreamReader (a cui si specifica il charset) poi incapsulato nel BufferedReader.
codice:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
Nel codice sopra ho messo come esempio il charset UTF-8. Ma nel tuo caso devi sapere tu quale è il charset con cui è stato scritto quel file. Non lo possiamo sapere noi, non lo può dedurre automaticamente il framework di Java.
Altra questione: anche ammesso di avere gli oggetti String corretti come caratteri, bisogna vedere dove li stampi/visualizzi. Su console del sistema? La console, perlomeno sui sistemi Windows, generalmente è sempre stata un po' più limitata come font/set di caratteri. Quindi anche qui ci potrebbero essere problemi con caratteri "speciali". Ma qui è un problema di rappresentazione grafica.