[Gelöst] Welchen Zeichensatz verwendet NAV? UTF-8?

Bild Microsoft Dynamics NAV 2013 (aka "NAV 7")

[Gelöst] Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon neckit » 12. Oktober 2015 08:27

Hallo miteinander,

wir haben einige Importe/Exporte erstellt, um Daten mit einem Partner-Unternehmen auszutauschen.
Nun wurde die Frage gestellt, mit welchem Zeichensatz NAV 2013 standardmäßig arbeitet.

Irgendwo meine ich "UTF-8" gelesen zu haben - ist das korrekt? Und sollte diese Angabe auch ausreichend sein?

Ich kenn mich damit leider überhaupt nicht aus - und hoffe ihr könnt mir das beantworten.

GruĂź
Ralf
Zuletzt geändert von neckit am 12. Oktober 2015 09:58, insgesamt 1-mal geändert.
Benutzeravatar
neckit
 
Beiträge: 176
Registriert: 11. Mai 2007 17:47
Wohnort: GĂĽtersloh/Werther
Arbeitsort: Melle-Neuenkirchen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 4.03 + NAV 2013 + BC 365 O

Re: Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon Kowa » 12. Oktober 2015 09:30

Irgendwo meine ich "UTF-8" gelesen zu haben - ist das korrekt?

Nein, für den Datenaustausch standardmäßig seit Urzeiten OEM (von IBM) Codepage 850 (in Westeuropa), auch bekannt als MS-DOS, da die Codepage 1987 mit MS-DOS 3.3 eingeführt wurde.

Für XMLports kann man das ab NAV 2013 optional auf UTF-8 o.a. einstellen, wenn die statt XML CSV-Dateien oder feste Feldlängen verarbeiten.
TextEncoding Property

Intern werden die Feldwerte ab dieser Version in Unicode gespeichert. Dadurch ist im Gegensatz zu den älteren Versionen hier jedes Zeichen darstellbar (Text Encoding). Das ist auch kein UTF (Unicode Transformation Format), welches ein Abbildungsverfahren von Unicode für (aus NAV Sicht externe) Dateiformate ist.

Ab NAV 2013 R2 kann man den Parameter TextEncoding auch beim Import und Export von Dateien optional zusätzlich verwenden.
Mögliche Werte hier: MsDos, UTF8, UTF16, Windows. Der Vorgabewert ohne diesen Parameter ist wie bisher OEM850 (= MsDos). Mit "Windows" ist hier die ANSI Codepage 1252 (in Westeuropa) des Betriebssystems für Nicht-Unicode-Dateien gemeint:
Lesen: OPEN Function (File)
Schreiben: CREATE Function (File)

Alternativ: Umwandlung mit .NET
Reading and Writing Unicode Files using C/AL
Reading and Writing textfile with Encoding

Dateikonverterfunktionen fĂĽr PowerShell

Achtung: Der optionale Parameter ASCII bei PowerShell-Cmdlets wie z.B. Out-File bedeutet Codepage 437 (sozusagen der amerikanische "Urvater" (als 8-Bit-Codepage von 1981), diese wiederum aufbauend auf dem "Uropa" US-ASCII (7-Bit-Codepage von 1963 mit nur 128 Zeichen) und damit nicht das gleiche wie "MsDos" in NAV. In dieser fehlen neben diversen anderen Abweichungen u.a. viele Sonderzeichen in Großbuchstaben, denen man in den westeuropäischen Sprachen so begegnet :wink:. Dafür kann Codepage 437 mehr Grafiksymbole, die unter DOS zur Erstellung von einfachen Grafiken genutzt werden können. Im Artikel zu Codepage 850 sind die Abweichungen farblich markiert bzw. einzeln verglichen. In den Funktionen habe ich natürlich u.a. deswegen auf Out-File verzichtet, aber auch weil man nur über DotNet-Methoden die volle Flexibilität für alle existierenden Codepages erhält. Ansonsten ist der richtige Parameter in der PowerShell für Codepage 850 bei üblichen Systemeinstellungen für Westeuropa OEM.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon Kowa » 12. Oktober 2015 09:55

GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: [Gelöst] Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon neckit » 12. Oktober 2015 09:59

Danke Kai!
Benutzeravatar
neckit
 
Beiträge: 176
Registriert: 11. Mai 2007 17:47
Wohnort: GĂĽtersloh/Werther
Arbeitsort: Melle-Neuenkirchen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 4.03 + NAV 2013 + BC 365 O

Re: Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon Natalie » 9. Mai 2016 11:45

Kowa hat geschrieben:Ab NAV 2013 R2 kann man den Parameter TextEncoding beim Import und Export von Dateien optional zusätzlich verwenden.
Mögliche Werte hier: MsDos, UTF8, UTF16, Windows.

Achtung, es ist nicht nur eine neue Option, es ist sogar unerlässlich, beim Import (also File.OPEN) den Encoding-Parameter entsprechend dem erwarteten Zeichensatz zu setzen.
Wie Kai schon sagte: setzt man den Encoding-Parameter NICHT, nimmt NAV MsDos an. Dieses liefert aber nur dann den richtigen Inhalt, wenn die einzulesende Datei im Format MsDos erzeugt worden war. Stammt die Datei aus einem anderen System als NAV (oder ist dort in ein anderes Format wie z.B. ANSI konviertiert worden), ist der Ă„rger quasi schon vorprogrammiert.

Weiterhin gibt es zu beachten, dass wenn man eine Datei mit Encoding=UTF8 öffnet, diese zuvor aber im Format MsDos oder Windows erstellt worden war, der Client zumindest unter NAV 2016 CU6 abstürzt.
Klar ist das eine Kombination, die man in der Praxis NICHT wählen sollte. Die übrigen Encoding-Kombinationen beim Export und Import aber funktionieren ohne Absturz, liefern halt nur Buchstabensalat.
Ich wollte das Microsoft melden, aber deren Ticketsystem ist gerade ausgefallen. Habe es jetzt Microsoft gemeldet.

Edit: Crash korrgiert mit CU9 fĂĽr NAV 2016.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon Natalie » 11. Mai 2016 08:05

Natalie hat geschrieben:Achtung, es ist nicht nur eine neue Option, es ist sogar unerlässlich, beim Import (also File.OPEN) den Encoding-Parameter entsprechend dem erwarteten Zeichensatz zu setzen.
Wie Kai schon sagte: setzt man den Encoding-Parameter NICHT, nimmt NAV MsDos an. Dieses liefert aber nur dann den richtigen Inhalt, wenn die einzulesende Datei im Format MsDos erzeugt worden war. Stammt die Datei aus einem anderen System als NAV (oder ist dort in ein anderes Format wie z.B. ANSI konviertiert worden), ist der Ă„rger quasi schon vorprogrammiert.

Und prompt ein schönes Beispiel aus dem NAV-Standard: Cumulative Update 7 für NAV 2016
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Welchen Zeichensatz verwendet NAV? UTF-8?

Beitragvon Natalie » 19. Mai 2016 13:30

Natalie hat geschrieben:Weiterhin gibt es zu beachten, dass wenn man eine Datei mit Encoding=UTF8 öffnet, diese zuvor aber im Format MsDos oder Windows erstellt worden war, der Client zumindest unter NAV 2016 CU6 abstürzt.

Nun habe ich einen weiteren Bug bei UTF-8, der den NAV 2016 Windows Client abstürzen lässt ("Cannot access a closed file." in der Ereignisanzeige). Meldung an Microsoft geht raus.

Letter ist eine Variable vom Typ Text mit der Länge 1.
Code: Alles auswählen
// Read files with InStream
TestFile.OPEN('C:\Temp\File1.txt',TEXTENCODING::UTF8);
TestFile.CREATEINSTREAM(NAVInStream);
NAVInStream.READ(Letter);
TestFile.CLOSE;

TestFile.OPEN('C:\Temp\File2.txt',TEXTENCODING::UTF8);
TestFile.CREATEINSTREAM(NAVInStream);
// in case of UTF-8, NAVInStream still is pointing to closed File1, it seems
NAVInStream.READ(Letter); // ==> CRASH in case of UTF-8: "Cannot access a closed file."
TestFile.CLOSE;


Workaround:
Code: Alles auswählen
[...]
TestFile.CLOSE;
CLEAR(NAVInStream); // <--- Neue Zeile

TestFile.OPEN('C:\Temp\File2.txt',TEXTENCODING::UTF8);
[...]


Edit: Crash korrgiert mit CU9 fĂĽr NAV 2016.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 2013

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast