Wenn man nicht konvertiert, sondern die selbe Datei einfach wieder als "UTF-8" speichert, ändert sich natürlich nichts an den bits in der Datei und damit auch nichts an den falschen Symbolen. Ich kann auch gerne noch ein mal hier drauf verweisen, dort habe ich es bereits für den Fall von N++ erklärt: Build 5552 Problem mit Kompaktsignalen
http://www.train-fever.net/ind…n/?postID=47942#post47942
Ergänzung / Erklärung:
Wie alles im PC bestehen auch Textdateien (zu denen lua auch gehört) aus einer Folge von bits. Diese bits repräsentieren die Buchstaben, die dann schließlich angezeigt (oder intern von TF ausgewertet) werden. Das Encoding legt dabei fest, wie die Bitfolge, zur einfacheren Lesbarkeit oft als Hexadezimalzahl dargestellt, in einzelne Symbole übersetzt wird. Das bekannte ASCII-Format umfasst hierbei die Codierungen für den hexadezimalen Bereich 00 bis 7F (Dezimal 0-127). In diesem Bereich sind ANSI und UTF-8 Symbole identisch. Das heißt ein "A" wird sowohl in ANSI als auch in UTF-8 als eine hexadezimale 41 codiert. Ein "ü" hingegen liegt nicht im ASCII-bereich und wird in ANSI durch FC repräsentiert , während es in UTF-8 als C3 BC gespeichert wird.
Train Fever erwartet nun, dass alle Symbole in der Datei UTF-8 kodiert vorliegen. Erscheint nun auf einmal die Bitfolge, die FC entspricht (einem mit ANSI kodiertes "ü"), wird das Symbol falsch interpretiert.
Wenn man eine ANSI-Datei als UTF-8 öffnet, oder auch eine UTF-8 kodierte Datei mit einem angenommenen ANSI-Encoding öffnet, werden nur die Symbole aus dem ASCII-Bereich richtig angezeigt. Alle anderen Symbole (inklusive deutscher Umlaute) werden falsch interpretiert. Einfaches abspeichern einer ANSI-Datei als utf-8 hilft hierbei nicht, solange beim Speichervorgang nicht auch alle Buchstaben richtig codiert abgespeichert werden. Der Texteditor muss also das ü als ANSI lesen (FC) und dann in der Datei als UTF-8 C3 BC wieder speichern. Um diese Umwandlung zu erzwingen, kann man bei Notepad++ zum Beispiel aus dem "Encoding"-Menü die "Convert to..." Optionen nutzen. (Siehe hier unbedingt meinen obigen Link)
Das BOM am Anfang der Datei wurde ursprünglich für UTF-16 und UTF-32 eingeführt. Hierbei geht es um die - wie der Name (Byte Order Mark) schon verrät - "order" - also Reihenfolge, oder "endianness" - sprich ob zuerst die höherwertigen oder zuerst die niederwertigen Bytes gespeichert wurden. Dies ist wichtig, da bei UTF-16 und 32 alle Symbole stehts aus mehreren Bytes bestehen, und die Reihenfolge der Bytes nicht fest ist, sondern eben durch die BOM festgelegt wird. Wenn ein Editor am Anfang der Datei ein BOM findet, kann er dadurch die Kodierung bestimmen. Bei UTF-8 gibt es keine Byte Order, trotzdem kann hier ein BOM eingefügt werden. In dem Fall ist das BOM nur ein Hinweis, dass hier UTF-8 genutzt wurde. Ein BOM ist bei UTF-8 aber nicht zwingend. Auch bei einem fehlenden BOM kann man anhand des Inhalts aber zwischen UTF-8 und ANSI unterscheiden, falls Symbole genutzt werden, die nur in einem der beiden Kodierungen definiert sind. Grundsätzlich leben wir ja nicht mehr in der Steinzeit und Unicode, zB das oft genutzt UTF-8 sollten Standard sein, auch wenn kein BOM darauf hinweist. Bei einigen Windowsprogrammen (vor allem den älteren) ist dies aber noch nicht so ganz angekommen.
Train Fever erwartet immer UTF-8 Dateien, d.h. man braucht kein BOM einfügen, da dies ja nur eine folgende UTF-8 Kodierung angeben würde, die von TF ja eh bereits erwartet wird. Man sollte als Modder eben nur darauf achten, Dateien UTF-8 kodiert zu speichern oder nur ASCII-Symbole zu verwenden, denn wenn nur ASCII-Zeichen verwendet werden und kein BOM eingefügt wird, gibt es keinen Unterschied zwischen einer ANSI und einer UTF-8 kodierten Datei.