Hallo zusammen,
AutoIt sollte doch eigentlich seit geraumer Zeit UNICODE beherrschen. Leider habe ich damit massive Probleme. Mir geht es speziell um das Lesen und Schreiben von Textdateien in UTF-8-Kodierung. Das erste Problem ist schon mal, dass AutoIt alles knallhart als ANSI behandelt, sobald sich in der Datei kein BOM (Byte Order Mark) befindet. Laut Spezifikation ist UTF-8 ohne BOM eigentlich jedoch ausdrücklich zulässig.
Mit Hilfe des quelloffenen EmEditor habe ich jetzt allen Dateien per Kommandozeile ein UTF-8-BOM verpasst. Jetzt klappt auch das Lesen der Sonderzeichen richtig.
Beim Schreiben gibt's dann aber noch massivere Probleme. Ich nutzte folgenden Code um eine solche Datei zu öffnen, den Text zu bearbeiten und neu zu schreiben:
[autoit]
$text = FileRead($file_path)
;... (irgendwelche Text-Operationen) ...
FileOpen($file_path, 128+2) ;UTF-8 berücksichtigen und alten Inhalt löschen
FileWrite($file_path, $text)
FileClose($file_path)
Das UNICODE-Flag bei FileOpen scheint AutoIt aber gar nicht zu interessieren, es schreibt anschließend trotzdem ganz normales ANSI und "füllt" das BOM-Byte einfach mit dem ersten Zeichen des Strings. Auch wenn ich versuchsweise eine neue Datei anlege und diese mit dem 128er-Flag öffne und Text reinschreibe ist das Ergebnis kein UTF-8 sondern ebenfalls nur ANSI.
Egal was ich mache, AutoIt schreibt schlicht kein UNICODE. In der Hilfe zu den Flags zu FileOpen steht aber ganz klar "128 = Use Unicode UTF8 when writing text with FileWrite and FileWriteLine (default is ANSI)".
Was läuft denn da falsch? Jemand eine Idee?
spyro