Umlaute in Adresse erzeugen Parameterfehler bei Anlageversuch
Durch Fehlermeldungen eines Kunden bin ich darauf aufmerksam geworden, dass die Anlage und Modifikation einiger Patientenadressen zu Fehlermeldungen führt – "Parameterfehler" ist alles, was vermeldet wird.
Ich habe das Problem jetzt auf Umlaute und ähnliche Sonderzeichen in den Adress-Datenfeldern eingrenzen können. Bindestrichen in Straßennamen gehören ebenso dazu. An Connect wird ein UTF8-formatierter JSON geliefert.
Bei manuell in MonKey Office angelegten Adressen sind Sonderzeichen möglich, und diese erscheinen auch korrekt in AdresseList oder Get.
Wie müssen Texte kodiert sein, um keine Parameterfehler zu erhalten?
-
Bei mir ist die entsprechende Datenbank in UTF-8 . Das Encoding der DB kann ich mir via SQLiteManager https://sqlabs.com/sqlitemanager anzeigen lassen. (ggf. gibt es noch andere Client-Programme, welche einem das Encoding anzeigen können).
-
In diesem Fall wird nicht direkt von der Datenbank (Postgres) auf Connect zugegriffen. Es gibt eine selbstgestrickte Buchhaltungslösung, die zwischen DB und Connect vermittelt. Dort habe ich noch einmal kontrolliert, dass das Datenbankmodul eine korrekte Codierung zuweist. Und auch der JSON-String an die Connect-API ist komplett UTF8.
Trotz allem schlägt so etwas fehl – Parameterfehler:
{"adresseModify":{"AdresseItem":{"Adresse_ID":"480C6…","VersionKey":"05F611A6…","RA_Strasse":"Ernst-Thälmann-Straße 23"}}}
Wird stattdessen ein Straßenname ohne Sonderzeichen und Umlaute übergeben, klappt alles. -
Werter Herr Bogun,
ich kann das Problem leider hier nicht nachvollziehen. Ich würde folgende Schritte zur Lösung vorschlagen1. bitte prüfen sie im Log von Connect, in welcher Form/Codierung die Funktionsaufrufe ankommen. Dazu das am besten alle Logausgaben in den Einstellungen aktivieren. Im Log selektieren Sie dann die entsprechenden Zeilen, um die Details zu sehen
2. prüfen Sie die Funktionen im Testclient. Treten dabei auch Fehler auf
Falls nichts hilft, müssten wir das Problem telefonisch klären
Mit freundlichen Grüssen
Andre Saischowa, Prosaldo GmbH
-
Vielen Dank, Herr Saischowa!
Im Log von Connect wird der JSON ganz korrekt codiert mit einem POST dargestellt, exakt wie oben, gefolgt von einem RequestJSON und einem JSONHandleRequest Parameterfehler.
Derselbe JSON-String, aus dem Debugger (dort auf UTF8 kontrolliert) in den Testclient kopiert, wird ohne Fehler ausgeführt.
Da es mit Strings im ASCII-Bereich funktioniert, bin ich am Grübeln, ob es einen mir unbekannten Curl-Parameter geben mag, der irgendwas in dieser Hinsicht ruiniert. -
Gefunden. So ganz falsch lag ich nicht mit den Curl-Parametern. Mir ist erst beim Umstellen der JSONs auf nichtkompakte Darstellung aufgefallen, dass im Client die abschließende Klammer fehlt. Grund war eine versehentliche Übergabe der Stringlänge, nicht der Bytelänge, in den Curl-Post-Parametern.
Vielen Dank für die Hinweise; waren sehr hilfreich!
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
5 Kommentare