Hallo, ich wünsche allen Mitgliedern der Liste einen erfolgreichen Beginn des 
neuen Jahres!

Und in den Feiertagen habe ich mich noch einmal hingesetzt, um auszuprobieren, 
ob man nicht doch das Encoding einer txt-Datei feststellen kann (ich fragte vor 
kurzem danach).
Dazu lasse ich mir 'mal mit der asc-Funktion die Ascii-Nummern aller Zeichen im 
Text geben. Und siehe da: Wenn die asc-Funktion für das Zeichen keine 
vernünftige Ascii-Nummer hat, dann gibt sie offenbar die Nummer des Code-Point 
aus. Da die Ascii-Nummer alle unterhalb und die Code-Points alle oberhalb von 
1000 liegen, muss ich nur alle Zeichen in einem Text ablaufen und sobald die 
asc-Funktion eine Zahl > 1000 zurückgibt, kann ich abbrechen und weiß, dass es 
sich (mit hoher Wahrscheinlichkeit) um einen ANSI-codierten Text handelt.
Fast könnte es ausreichen, nur das 1. Zeichen zu prüfen, denn UTF8-codierte 
Texte stellen (immer) den Code-Point 65279 voran, bei dem es sich wohl um das 
BOM handelt. ANSI-Texte tun das offenbar nicht.
Mein Test-Text ist äöüßéè@€!?[]{}$%&~\. Nur das Euro-Zeichen macht ein Problem, 
weil es auch in einem UTF8-codierten Text von der asc-Funktion mit 8364 
wiedergegeben wird.
Getestet habe ich das alles unter Windows mit Dateien, die erzeugt wurden von 
WordPad (Editor) ANSI, WordPad (Editor) UTF8, Word Windows Standard, Excel, 
OpenOffice Writer.

Aber das ganze geht bestimmt noch eleganter?

beste Grüße, Christian Hahn.

Antwort per Email an