Ansi UTF-8

  • Hi,

    bin am verzweifeln.

    Mein Script fügt in eine TXT ; ein. Leider wird die Datei immer als UTF-8 gespeichert, was die weiteren Programme nicht können.
    Die Quell Datei ist ANSI und soll auch wieder in ANSI ausgespuckt werden.

    Nach dem was ich gelesen habe, arbeitet AutoIT eigentlich immer mit ANSI, außer es wird speziell angegeben.

    Was ist der Fehler ?

  • Script das folgt ist von BugFix mit dem Vermerkt: Nicht getestet, aber sollte laufen

    AutoIt
    #Include <WinAPI.au3>
    Local $fh = FileOpen('UniCodeFile.txt', 32) ; Windows default mode UTF16 Little Endian
    Local $strUC = FileRead($fh)
    Local $len = StringLen($strUC) +1
    FileClose($fh)
    Local $tString = DllStructCreate("wchar[" & $len & "]")
    DllStructSetData($tString, 1, $strUC)
    Local $strANSI = _WinAPI_WideCharToMultiByte(DllStructGetPtr($tString))
    FileWrite(@ScriptDir & '\meineANSI.txt', $strANSI)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Jup

    Code
    $file = FileOpen($benutzteDatei, 512)

    ohne Erfolg. Sorry hatte ich vergessen zu sagen.

    Habe jetzt das mal gestet, auch UTF8.

    wenn die Zeile 1 auf 513 anstat 1 steht auch UTF8. ich dreh echt durch.

    Code
    $file = FileOpen("test.txt", 1)
    
    
    FileWrite($file, "Line1")
    FileWrite($file, "Still Line1" & @CRLF) ; The CRLF at the end is a line break
    FileWrite($file, "Line2")
    
    
    FileClose($file)

    2 Mal editiert, zuletzt von autowolf (16. November 2015 um 15:56) aus folgendem Grund: Habe jetzt das mal getestet und auch UTF-8

  • Was sagt denn, dass es als UTF-8 gespeichert wurde? Wenn du mit nem Hex-Editor aufmachst, guck mal, ob da führende Bits sind.

    Nein sind keine Bits im Hex zu sehen.


    Damit hast du den zweiten Teil der Frage beantwortet. Den ersten Teil, Wer oder "Was sagt denn, dass es alt UTF-8 gespeichert wurde?", jedoch nicht.
    Welchen Editor nutzt du? Sonst können wir das Problem nicht gezielt nachstellen und kontrollieren. ;)

    Grüße Yaerox

    Grüne Hölle

  • Hab grad die Changelogs von Autoit gelesen:
    3.3.14.0 (10th July, 2015) (Release)
    AutoIt:
    Changed: Default text file encoding changed to UTF8 without BOM.
    Das erklärt wahrscheinlich das Auftreten des Problems.
    Sieht man mal wieder, wieso es wichtig ist, die verwendete AutoIt-Version anzugeben :)
    Wär ich aber vermutlich auch nicht so schnell drauf gekommen.

    • Offizieller Beitrag

    Changed: Default text file encoding changed to UTF8 without BOM.

    Jetzt muß dann nur noch SciTE standardmäßig ebenfalls UTF8 verwenden (statt wie bisher 'locale', hier also Win1252) und dann kann man hoffen, dass in ca. 10 Jahren alle Dateien auch in UTF8 geschrieben sind. Es ist immer ein Krampf allgemeingültige Editor-Plugins zu schreiben, wenn man nicht weiß, welches Encoding bei zu lesenden Dateien verwendet wird. Nicht alle Encodings sind eindeutig zu identifizieren. :S

  • Naja, die führenden Bits, die das angeben sollen sind aber manchmal auch blöd. Bei PHP hat es mir deshalb schon die Dateien zerschossen, da vor manchen Befehlen ja nichts anderes stehen darf, aber Notepad jedesmal beim speichern die führenden Bits hinzugefügt hat, die dann natrülich davor stehen..... Hat ewig gedauert, bis ich darauf kam mit nem Hex-Editor da drüber zu gucken... :S
    Und jetzt darf ich immernoch jedesmal die Bits da wieder wegnehmen...