Interpretar una cadena de una codificación a otra en java

He buscado respuestas a esto (estoy seguro de que están disponibles), y no estoy seguro de que sea posible.

Entonces, obtuve un archivo ENORME que contiene la palabra "för". Estoy usando RandomAccessFile porque sé dónde está (más o menos) y, por lo tanto, puedo usar la función seek () para llegar allí.

Para saber que lo he encontrado, tengo un String "för" en mi programa que compruebo por igualdad. Aquí está el problema, ejecuté el depurador y cuando llego a "för" lo que puedo comparar es "för".

Entonces mi programa termina sin encontrar ningún "för".

Este es el código que uso para obtener una palabra:

    private static String getWord(RandomAccessFile file) throws IOException {
    StringBuilder stb = new StringBuilder();
    String word;
    char c;
    c = (char)file.read();
    int end;
    do {
        stb.append(c);
        end = file.read();
        if(end==-1)
            return "-1";
        c = (char)end;

    } while (c != ' ');
    word = stb.toString();
    word.trim();
    return word;
}

Básicamente, devuelvo todos los caracteres desde el punto actual del archivo al primer carácter ''. Así que básicamente me sale la palabra, pero desde (char) file.read (); lee un byte (creo), UTF-8 'ö' se convierte en los dos caracteres 'Ã' y '¶'?

Una razón para esta suposición es que si abro mi archivo con codificación UTF-8 es "för", pero si abro el archivo con ISO-8859-15 en el mismo lugar, ahora tenemos exactamente lo que devuelve mi método getWord: "fö" r "

Entonces mi pregunta:

Cuando estoy sentado con un "för" y un "för", ¿hay alguna forma de arreglar esto? ¿Como decir "leer" för "como si fuera una cadena UTF-8" para obtener "för"?

Respuestas a la pregunta(3)

Su respuesta a la pregunta