Umlaute in Texfeldern werden doppelt in Textlänge berechnet

42 views
Skip to first unread message

Richard Keil

unread,
Feb 14, 2022, 9:56:45 AM2/14/22
to immobilienscout24-development
Hallo Immoscout Team,

wir haben ein Problem mit Umlauten und der maximalen Länge von Textfeldern bei der Erstellung von Immobilien. Und zwar scheint die Textlänge in der Validierung der IS24-API nicht anhand der Anzahl der Zeichen berechnet zu werden, sondern anhand der Anzahl der verwendeten Bytes.
Sendet man z.B. im Feld "descriptionNote" 3999x das Zeichen "a", funktioniert alles wie erwartet. Tauscht man jedoch ein "a" durch ein "ä" aus, so schlägt die Validation mit dem Fehler "LENGTH_EXCEEDED" fehl. Umso mehr Zeichen man tauscht, desto kürzer muss der Text sein, um noch korrekt validiert zu werden.
Meine Vermutung ist, dass das "ä" welches in UTF-8 zwei Bytes belegt (anstatt nur eins, wie die üblichen ASCII-Zeichen) entsprechend zweimal gezählt wird. Das ist darauf gestützt, dass man exakt 1999x "ä" senden kann, sodass die Validation noch durchläuft, aber bei 2000x "ä" sie fehlschlägt. Denn 1999x2 < 3999, aber 2000x2 > 3999.
Gleiches passiert mit dem Zeichen "ࠀ", was in UTF-8 drei Bytes belegt. Da ist dann ab 1333 Zeichen schon Schluss (1333x3 = 3999).
Hier ein beispielhafter JSON Payload, der zu dem Fehler führt (die "ä"s sind hier zum Test extra nicht als \u00e4 kodiert — das Problem tritt aber bei beiden Varianten auf):

{"realestates.apartmentRent":{"externalId":"53Eb7WjX","title":"Eine Testimmobilie","address":{"street":"Lessingstraße","houseNumber":"1","postcode":"26382","city":"Wilhelmshaven"},"descriptionNote":"ääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää","showAddress":false,"baseRent":999,"livingSpace":999,"numberOfRooms":1,"courtage":{"hasCourtage":"NO"}}}

Aufgefallen ist das, da ein Kunde einen Text online stellen wollte, der ca. 3800 Zeichen lang war, jedoch auch einige Umlaute und andere Zeichen mit mehr als einem Byte beinhaltete. Folglich schlug auch hier die Validation fehl. Man kann dem Kunde in diesem Fall auch nur schwer einen hilfreichen Fehler anzeigen, da die "erlaubte" Textlänge ja durch die verwendeten Zeichen variiert.

Es scheint vor einiger Zeit schonmal einen Post in diese Richtung gegeben zu haben, da hatte sich das Problem dann aber scheinbar seitens des Nutzers geklärt.

Könnt ihr das Problem reproduzieren? Oder seht an anderer Stelle einen Fehler?

VG Richard

Olaf Lindenau

unread,
Feb 15, 2022, 7:07:12 AM2/15/22
to immobilienscout24-development
Hallo Richard,

besten Dank für deine Beschreibung. Es ist tatsächlich so, dass "Sonderzeichen" mehr Platz einnehmen und daher die 3999 Zeichen nicht ausreichen, was dazu führt, dass der Text dann gekürzt werden muss. Wir sind dran hier nach zu bessern. Aktuell gibt es aber keinen anderen Weg als den Text zu kürzen, wenn "Sonderzeichen" verwendet werden.

Beste Grüße,
Olaf

Richard Keil

unread,
Feb 15, 2022, 12:17:34 PM2/15/22
to immobilienscout24-development
Hallo Olaf,

danke für die Rückmeldung, da wissen wir zumindest wie der Stand ist. Schick gern ein Update, sobald ihr den Fehler beheben konntet.

VG Richard

Reply all
Reply to author
Forward
0 new messages