Hello,
UTF-8 wird eher selten für die interne Verarbeitung verwendet, eben weil man sonst immer nur anhand der Sequenz die Zeichengrenzen bestimmen kann. Stattdessen nimmt man für Strings pro Zeichen 16 Bit (oder auch mal 32 Bit für die vergleichsweise selten verwendeten Zeichen oberhalb der BMP) und kann dann ähnlich effizient wie beim 1-Zeichen-gleich-1-Byte-Prinzip arbeiten.
Das bedeutet aber Rechenzeit und Speicherplatz für die Umwandlung aus der (komprimierten, persistenten) Datenhaltung in die Arbeitsdatenhaltung.
Wenn man das 15.000ste Zeichen sucht (warum auch immer), muss man die Datei (als persistente Datenhaltung) von Anfang an bis mindestens zu diesem Zeichen einlesen und auswerten. Das können dann auch schon mal 60.000 Bytes sein :-O
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg