![]() |
Unicode Zeichensatz erkennen
Moin,
ich habe das folgende Problem: Das Programm soll zeilenweise eine Textdatei einlesen. Da bei ist das Programm das die Datei aus ASCII, UFT-8, UTF-16 oder Unicode bestehen kann. Ich weiß es gibt schon Sammlungen wie ElPak oder TNT-Unicode oder JEDI nur leider stellen diese Komponenten nicht die Funktionalität zur Verfügung, die ich benötige. Denn das Programm soll die entsprechenden Dateien nach bestimmten Zeichenketten durchsuchen und filtern. Das ganze soll dann wieder in eine Textdatei des gleichen Formats geschrieben werden. Eine TStringList möchte ich nicht verwenden, weil diese Komponte bei großen Dateien (einige 100 MB) nicht besonders performant ist, denn das Tool soll auch auf älteren Kisten laufen. Zur verwende ich die POS-Funktion zur Bestimmung, ob der Suchstring eventuell in der Zeichenkette vorhanden ist. Und funktioniert eigentlich
Delphi-Quellcode:
auch mit Unicode??? Mit einer Intensiven Google recherche habe ich nichts brauchbares gefunden.
ReadLN
Vielen Dank schon mal MfG Naujo |
Re: Unicode Zeichensatz erkennen
Zitat:
Aber die Implementierungen von ElPack/TntWare können dir ja als vorlage dienen wie man die verschiedenen Formate (Unicode/Ansi/...) erkennt. Darst halt nicht wie dort alles in einen schwung einlesen sondern "nur" blockweise eine Erkennung machen |
Re: Unicode Zeichensatz erkennen
Ok.
Dann werde ich das mal versuchen. Danke. MfG Naujo |
Re: Unicode Zeichensatz erkennen
Wenn es solche Dateien sind, die nicht nur den Text als UTF-8/16 oder ANSI enthalten, sondern die bei den UTFs auch noch ein Kennbyte enthalten, dann mußt du nur die ersten beiden Bytes auswerten.
Wie müssen die Werte sein? Nunja, man nehme sich Notepad zur Hand, starte es. Tippsele etwas Text und speicher diesen einmal als "Unicode" (UTF-16) und einmal als "UTF-8" ab. Danach schaue man sich das Resultat und davon die ersten 2 Bytes in einem Hexeditor an. Voila, damit hast du's. Wenn du einen String hast, gibt dir u.U. die Funktion ![]() Achtung, Windows unterstützt mindestens bis inkl. Windows 2000 kein echtes UTF-16 sondern vielmehr nur das was man als UCS-2 (2bytiges Unicode ohne Surrogates) kennt! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz