[gelöst] Umlaute und Sondersprachzeichen mit ODATA

9. Dezember 2015 16:53

Hallo zusammen,

wenn ich mit OData auf meine CRM Daten zugreife und in einem Textfeld suche kann es vorkommen das dort Umlaute wie ö ä ü oder Sondersprachzeichen wie é è ê und so weiter vorkommen. OData scheint damit allerdings ein Problem zu haben. Es wird dann nichts zurück gegeben obwohl in der Entität über die gesucht wird nachweislich ein passender Datensatz enthalten wäre. Wie kann ich das lösen? Muss ich da über jeden Suchstring den ich mitgeben will drüber laufen und die Sonderzeichen durch den ASCII Wert ersetzen oder gibt es dafür einen gesonderten Vergleich der das berücksichtigt?
Mich wundert es halt grade das es nicht geht weil ich hätte schwören können das der ein oder andere Firmennamen den ich schon über OData gesucht habe auch Umlaute hatte. Finde aber jetzt natürlich grade kein Beispiel mehr wo ich mit OData einen Filter gebaut habe der dann Umlaute enthielt. :-|
Zuletzt geändert von Nicole Schmitz am 10. Dezember 2015 11:07, insgesamt 1-mal geändert.

Re: Umlaute und Sondersprachzeichen mit ODATA

10. Dezember 2015 09:35

Hallo zusammen,

ich habe schon folgendes rausgefunden:
Ich suche über Land und möchte beispielsweise "Grönland" finden. Dann wird über OData so kein Ergebnis zurück kommen obwohl Grönland da ist. Aber wenn ich den String so mitgeben "Gr%u00f6nland" mitgebe dann kommt der Datensatz Grönland zurück. Nun müsste ich diese Umsetzung automatisch über das Javascript laufen lassen, da ich den Suchstring aus einem anderen Feld bekomme ich suche als nach unterschiedlichen Ländern. Ich habe schon versucht meinen Suchstring mit escape(suchstring) richtig umzusetzen aber da kommt dann nur "Gr%f6nland" bei raus und das findet OData wieder nicht. Gibt es eine Methode mit der ich das in die von OData benötigten Unicode Zeichen übersetzen kann oder muss ich mir da was von Hand bauen?

Re: Umlaute und Sondersprachzeichen mit ODATA

10. Dezember 2015 11:07

Hallo zusammen,

ich konnte mir jetzt doch selber helfen. Ist sicherlich ein umständlicher Weg und ich versteh immer noch nicht ganz wieso ich ihn an der Stelle gehen muss da es an anderen Stellen ohne den Umweg zu funktionieren scheint aber sei es drum. Hier meine Lösung für diese Problematik.

Ich habe meinen Filterstring selectedValue, und diesen Wandel ich jetzt mit Hilfe von escape um und ersetze dann mittels replace das reine % durch %u00 das funktioniert ganz gut für Umlaute und ausländische Buchstaben wie ê oder so. Suchstrings mit Sonderzeichen wie ' machen so allerdings weiterhin Probleme, die verbiete ich daher einfach.
Code:
var selectedValue = "Grönland";
var find = '%';
var re = new RegExp(find, 'g');
var vergleichsWertUnicode =  escape(selectedValue); //Ergebnis Gr%F6nland
var vergleichsWertJSON = vergleichsWertUnicode.replace(re, '%u00'); //Ergebnis Gr%u00F6nland

meine Variable vergleichsWertJSON kann ich jetzt an den OData filter übergeben und der gewünschte Datensatz wird gefunden.

Re: [gelöst] Umlaute und Sondersprachzeichen mit ODATA

11. Dezember 2015 09:17

Hallo Nicole,

hab vielen Dank für deine Rückmeldung :-)