Xojo Conferences
XDCMay2019MiamiUSA

Encoding-Analyse (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: Kommunikation Webapp und MySql-DB
Next thread: Leerstring in MySql


Probleme mit String Bearbeitung   -   Markus Schnell
  Encoding-Analyse   -   Christian Hahn
   Re: Encoding-Analyse   -   Stefan Mettenbrink

Encoding-Analyse
Date: 02.01.13 17:35 (Wed, 2 Jan 2013 17:35:39 +0100)
From: Christian Hahn
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.

Re: Encoding-Analyse
Date: 02.01.13 17:58 (Wed, 2 Jan 2013 17:58:44 +0100)
From: Stefan Mettenbrink
Christian Hahn wrote:

> Aber das ganze geht bestimmt noch eleganter?

So geht es allenfalls bei Dir.
Welche ANSI-Codepage verwendet wird kannst Du nicht erkennen. Auch
Mac-Codierungen und UTF-8 ohne BOM werden nicht korrekt erkannt.

Nur anhand eines vorliegenden Textes kann das Encoding nur geraten
werden. Raten bedeutet aber auch, dass man daneben liegen kann.

Gruß, Stefan Mettenbrink.