OK, da inzwischen auch schon jemandem mit mir via PN geschrieben hat, hier noch ein paar Überlegungen:
- es wird eine Datei oder was Anderes stückchenweise ausgelesen und verarbeitet, dabei dürfen aber natürlich zusammenhängende Strukturen nicht getrennt werden.
- da die UTF-8-Unterstüzung seitens Windows einfach nur bescheiden ist, wird das Suchen hier, selber erledigt müssen, wobei sich die Leading-/Trailing-Bytes über einen Bitvergleich recht leicht finden lassen
- die SurrogaePairs im
Unicode muß ich auch selber suchen
> heißt also, daß UTF-8, UC2 und UC2-LE manuell geprüft werden
- bei den anderen CodePages, werde ich wohl versuchen über IsLeadChar und CharNextExA, bzw. CharNextW (leider gibt es auch keine Unterstützung für UC2-LE, aber die Zeit für eine Umkodierung nehm ich in Kauf, da dieses wohl selten gnutzt wird)
Wo es allerdings ein großes Problem gibt, das sind die Combining-Chars
U+0061 U+030a (LATIN SMALL LETTER A + COMBINING RING ABOVE) ergeben ja "å"
Aktuell ist mein Plan mich erstmal an den Steuerzeichen zu orientieren und möglichst da zu schneiden und wenn da keines (in einem angemessenen Bereich) zu finden ist, dann versuch ich mir noch was zu überlegen, um MultiByte-, Combining-, Surrogate-, UTF-8-, UTF-7-Zeichen und was weiß ich noch, zu erkennen und möglichst nur vor/nach diesen Zeichen zu schneiden.
Derzeit arbeitet mein Code zeilenweise, aber diese kurzen Stückchen lassen sich einfach nicht optimal verarbeiten und es bremst extrem aus.
Nja, zumindestens hab ich vorhin mal angefangen diese Verarbeitung in eine eigene Klasse auszulagen, weil es irgendwie immer mehr wird, als Anfangs mal gedacht war.