[Gelöst] File.CREATE in UTF-8 wird zu ANSI
Verfasst: 13. Mai 2016 10:35
Ich brauche mal eure Meinung, bevor ich das zu voreilig an Microsoft weiter gebe.
Und zwar nutze den Encoding-Parameter von File.CREATE, um den Zeichensatz der Datei in UTF-8 vorzugeben. Beispiel:
Zum Schluss öffne ich die erstellte Datei im Texteditor, um mittels "Speichern unter" den verwendeten Zeichensatz zu kontrollieren.
Dabei stellt sich nun folgendes heraus:
Wiederhole ich den Test mittels DotNet-Variablen (das Encoding hängt dann nicht am File.OPEN, sondern an der DotNet streamWriter-Variablen; Codebeispiel siehe hier), dann wird die Datei in jedem Fall als UTF-8 abgespeichert.
Genau so hätte ich das auch bei File.CREATE erwartet ... Was meint ihr?
PS: Habe den Test mit ASCII und ANSII als Vorgabe versucht.
Und zwar nutze den Encoding-Parameter von File.CREATE, um den Zeichensatz der Datei in UTF-8 vorzugeben. Beispiel:
- Code:
TestFile.TEXTMODE := TRUE;
TestFile.WRITEMODE := TRUE;
TestFile.CREATE('C:\Temp\UTF8\Test.txt',TEXTENCODING::UTF8);
TestFile.WRITE(meinText); // siehe Kommentar unten
TestFile.CLOSE;
Zum Schluss öffne ich die erstellte Datei im Texteditor, um mittels "Speichern unter" den verwendeten Zeichensatz zu kontrollieren.
Dabei stellt sich nun folgendes heraus:
- Ist Variable meinText leer oder enthält nur "einfache" Buchstaben wie "abc", dann wird die Datei mit Encoding = ANSI !!! abgespeichert
- Nur wenn meinText Umlaute o.ä. enthält, wird sie auch mit Encoding = UTF-8 abgelegt.
Wiederhole ich den Test mittels DotNet-Variablen (das Encoding hängt dann nicht am File.OPEN, sondern an der DotNet streamWriter-Variablen; Codebeispiel siehe hier), dann wird die Datei in jedem Fall als UTF-8 abgespeichert.
Genau so hätte ich das auch bei File.CREATE erwartet ... Was meint ihr?
Onlinehilfe hat geschrieben:Optionally, you can specify the encoding on the file. By specifying the text encoding, you ensure that all the language-specific characters are represented correctly in Microsoft Dynamics NAV when you read data and write data.
PS: Habe den Test mit ASCII und ANSII als Vorgabe versucht.
- ANSI = encoding.GetEncoding(1252): Die Datei wird immer (sowohl mit NAV- als auch DotNetFunktion) im ANSI-Format erstellt
- ASCII = encoding.GetEncoding(850): Die Datei wird immer im ANSI-Format erstellt ....!!