[Gelöst] Problem mit UTF-Sonderzeichen im XMLPort

28. Juli 2014 15:26

Hallo zusammen,
bin gerade am verzweifeln weil ich eine CSV-Datei, die an angeblich UTF-8-Kodiert sein soll, nicht korrekt importiert bekomme wegen Sonderzeichen.

Wenn ich mir die Datei im Texteditor anschaue steht als Text z.B:
Universitätsbuchhandlung

Nach dem Import steht, in der Tabelle, aber folgendes drin:
UniversitŽñtsbuchhandlung

Import erfolgt mit einem XMLPort im RTC-Client mit eingestellten Properties siehe Screenshot.

Hat jemand eine Idee warum die Sonderzeichen nicht korrekt eingelesen werden?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von f.ritz am 29. Juli 2014 11:57, insgesamt 1-mal geändert.

Re: Problem mit Sonderzeichen

28. Juli 2014 16:10

Hallo,

wahrscheinlich hast du dieses Acsii Ansi Problem.

Schau mal ob du damit zurecht kommst:
http://www.mibuso.com/forum/viewtopic.p ... w=previous


Gruß
Aydin

Re: Problem mit Sonderzeichen

28. Juli 2014 16:20

Trotz, dass es sich um UTF-8 handelt, hatte ich es auch ausprobiert - leider ohne Erfolg...

Re: Problem mit Sonderzeichen

28. Juli 2014 16:26

aydina81 hat geschrieben:Schau mal ob du damit zurecht kommst:
http://www.mibuso.com/forum/viewtopic.p ... w=previous

Die dort erwähnte Codeunit ist unvollständig und von der Performance extrem schlecht, da es den String noch zeichenweise abarbeitet.
Die besagte Codeunit in einer aktuellen Datenbank arbeitet bereits mit CONVERTSTR, was deutlich schneller ist, jedoch habe ich meine Zweifel, ob die Funktion fehlerfrei/vollständig ist, da die beiden Strings eine unterschiedliche Länge haben.

Alternativ habe ich noch eine Variante anzubieten: viewtopic.php?f=20&t=4001

Re: Problem mit Sonderzeichen

28. Juli 2014 16:44

Timo Lässer hat geschrieben:
aydina81 hat geschrieben:Alternativ habe ich noch eine Variante anzubieten: viewtopic.php?f=20&t=4001


Danke für den Tip, aber leider auch ohne Erfolg... Wie gesagt, es geht hier um UTF-8, d.h. ein ü sieht im HEX-Editor, bei unterschiedlichen Zeichenkodierungen, wie folgt aus:
    UTF-8: C3BC
    ASCII: 00FC

Und ich habe UTF-8! Was der XMLPort laut MS eutomatisch schon kann... Tut es aber nicht... :oops:

Re: Problem mit Sonderzeichen

28. Juli 2014 16:47

Vergleiche mal, was passiert, wenn du mittels XMLport mit Encoding = UTF-8 ein Textfeld mit Umlauten exportierst. Was steht dann in der Textdatei?

Re: Problem mit Sonderzeichen

28. Juli 2014 17:04

Natalie hat geschrieben:Vergleiche mal, was passiert, wenn du mittels XMLport mit Encoding = UTF-8 ein Textfeld mit Umlauten exportierst. Was steht dann in der Textdatei?


Hmmmm.... Export eines Feldes mit Inhalt Füller, macht ü zu 81(in HEX) :roll:
Verstehe ich nicht...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Problem mit Sonderzeichen

28. Juli 2014 17:20

Hast du die Möglichkeit das Ganze auf einem anderen Rechner auszuprobieren?

Re: Problem mit Sonderzeichen

28. Juli 2014 17:29

aydina81 hat geschrieben:Hast du die Möglichkeit das Ganze auf einem anderen Rechner auszuprobieren?


Ja. Ich habe jetzt den XMLport auf einem anderen Server/Service Tier ausgeführt. Es blieb alles unverändert...

Re: Problem mit Sonderzeichen

28. Juli 2014 19:19

Hmmm, hab ja lange nichts mehr mit Dynamics NAV 2009 gemacht, aber war diese Eigenschaft nicht nur für das Encoding-Attribut zuständig, aber dir eigentliche Zeichen-Kodierung war trotzdem OEM? dementsprechend müssen auch die Zeichen zwischen den Codepages weiterhin noch konvertiert werden...

Man möge mich korrigieren...

Re: Problem mit Sonderzeichen

28. Juli 2014 20:24

SilverX hat geschrieben:Hmmm, hab ja lange nichts mehr mit Dynamics NAV 2009 gemacht, aber war diese Eigenschaft nicht nur für das Encoding-Attribut zuständig, aber dir eigentliche Zeichen-Kodierung war trotzdem OEM? dementsprechend müssen auch die Zeichen zwischen den Codepages weiterhin noch konvertiert werden...


Diese Vermutung hatte ich ebenfalls. Danke für den Hinweis! Werde dann morgen weiter suchen...

Re: Problem mit Sonderzeichen

29. Juli 2014 07:38

Unter Dynamics NAV 2013 ist TextEncoding als Eigenschaft dazugekommen. Ich denke also, meine Vermutung ist richtig...

Re: Problem mit Sonderzeichen

29. Juli 2014 11:57

Vielen Dank noch mal für die vielen Tips! Letzendlich hatte SilverX Recht!

Navision verwendet bei den XMLPorts, in NAV 2009, die OEM-Codepage-850 ... :shock:

Ich habe das Problem dadurch gelöst, dass vor dem Import der Datei ein PowerShell-Script aufgerufen wird der die Zeichensatz-Konvertierung erledigt(alternativ könnte man eine Automation in .NET schreiben).

Anbei der Script, falls es jemand benötigt:
Code:
$SourcePath = "C:\Test"
$DestPath = "C:\Test\OemConvert"
$filename = "MeineDatei.csv"

echo $("Konvertiere Datei...")
[System.Text.Encoding] $Utf8Encoding = New-Object System.Text.UTF8Encoding($TRUE);
[System.Text.Encoding] $Cp850Encoding = [System.Text.Encoding]::GetEncoding(850);
echo $("Lese als UTF-8...")
[string[]] $UTF8_Content = [System.IO.File]::ReadAllLines("$SourcePath\$filename",$Utf8Encoding);
echo $("Schreibe als OEM-Codepage-850...")
[System.IO.File]::WriteAllLines("$DestPath\$filename", $UTF8_Content , $Cp850Encoding)
echo $("Konvertiert!")