Fehler #348

DatevExport kommt mit bestimmten Zeichen im Buchungstext nicht klar

Von Werner Hahn vor 4 Monaten hinzugefügt. Vor 3 Monaten aktualisiert.

Status:In BearbeitungBeginn:15.02.2018
Priorität:NormalAbgabedatum:
Zugewiesen an:-% erledigt:

0%

Kategorie:-
Zielversion:-

Beschreibung

Bei Dialogbuchen ist es mir beim € Zeichen aufgefallen
Bei Rechnungen mit Kundennamen z.B. Kulašić

Historie

#1 Von Jan Büren vor 4 Monaten aktualisiert

  • Status wurde von Neu zu Abgewiesen geändert
  • Zielversion 3.6 wurde gelöscht

Nein.
Der DATEV-Import kann nur CP-1250 (Windows Europäisch) verarbeiten.

Damit erst gar nicht in dieser fehlerhaften Form exportiert wird, hab ich eine strikte Prüfung hierfür angesetzt, bzw. diese Zeichen werden gefiltert.

Das wäre jetzt meine erste Vermutung.
Prüf mal, wie das € kodiert ist.

Es gibt auch Testfälle für dieses Verhalten, wenn Du da etwas verbessert willst / kannst.

#2 Von Werner Hahn vor 3 Monaten aktualisiert

Hat sich doch als Fehler erwiesen, getestet mit Jan auf den CLTs

#3 Von Jan Büren vor 3 Monaten aktualisiert

  • Status wurde von Abgewiesen zu In Bearbeitung geändert

Hallo Werner,
ja, sorry fürs erste Abweisen, aber ich bin erstmal von internen Kodierungsfehlern ausgegangen.

Auf der anderen Seite wäre ein Feedback zu "Prüf mal wie das € kodiert ist", simpel machbar gewesen:

Das €-Zeichen ist folgendermaßen kodiert:

$ cat t
€
$ hexdump -C t
00000000  e2 82 ac 0a                                       |....|

Ah, ok 'e2 82 ac' -> € in utf8 (s.a.: http://utf8-chartable.de/unicode-utf8-table.pl?start=8320&number=128&names=)

Das sollte sauber nach cp1252 konvertieren, nämlich so:

$ iconv -futf8 -tcp1252 t
€

Kulašić ist jetzt der Knackpunkt, hier gibt es ein Zeichen das nicht in cp1252 vorhanden ist.

$ cat kulasic                                             # utf8 terminal
Kulašić
$ iconv -futf8 -tcp1252 kulasic         # win-1252 terminal
Kulašiiconv: ungültige Eingabe-Sequenz an der Stelle 7

An der Stelle war ich bei Entwickeln unsicher, ob ich das generell ablehne oder dann nur teilweise kodiert übergeben soll.

Soweit die Zusammenfassung, ich hab jetzt einen Testfall für diese 4 Varianten und einen Fix.

S.a. Commit f2b3e089.

P.S.: Es gibt wieder steigmann unstable

#4 Von Moritz Bunkus vor 3 Monaten aktualisiert

Du kannst iconv (und damit Text::Iconv) mit der Option translit nutzen. Dann werden Zeichen, die im Zielzeichensatz nicht vorhanden sind, durch ähnliche Zeichen ersetzt:

[0 mbunkus@chai-latte ~] echo Kulašić | iconv -f utf-8 -t cp1252//translit | iconv -f cp1252 -t utf-8
Kulašic
[0 mbunkus@chai-latte ~] perl -MText::Iconv -Mutf8 -e 'print(Text::Iconv->new("utf-8", "cp1252//translit")->convert("Kulašić"), "\n")' | iconv -f cp1252 -t utf-8
Kulašic

In kivitendo über den Wrapper SL::Iconv.

Auch abrufbar als: Atom PDF