"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Zeicheneinschränkung (UTF-8) bei Webapplikationen

Garrett 26.03.2020 - 15:30 6894 27
Posts

Garrett

Here to stay
Avatar
Registered: May 2003
Location: Wien
Posts: 1079
Hallo,

ich beschäftige mich als Laie grad mit der Thematik, wie ich bei einem Webformular (zB Registrierungsformular) einschränken soll, welche Zeichen dort der User eingeben kann.

Beispiel: Russischer Tourist registriert sich auf einer Website und gibt kyrillische Schriftzeichen in den Feldern Vor/Nachname usw. ein und das ganze wird dann an die Kundendatenbank im Hintergrund weitergeleitet. Wenn das Webformular und die DB im Hintergrund UTF-8 unterstützen, sollte das ja technisch ja einwandfrei gehen, oder?

Das entstehende Problem, welches ich hier sehe: Der Backoffice Mitarbeiter im Hintergrund hat dann auf einmal mit chinesischen, kyrillischen uvm. Schriftzeichen in der Kundendatenbank zu kämpfen, welcher er/sie nicht einmal auf der Tastatur vorfindet. Das kanns ja auch nicht sein?

Wie kann ich nun einschränken, dass der User nur bestimmte Zeichen eingeben darf? Was ist hier State-of-the-Art? Habe zB diese ISO Norm hier gefunden? https://de.wikipedia.org/wiki/ISO_8859-15

Sorry für die laienhafte Formulierung, ich bin da in das Thema reingerutscht und versuch mich gerade zurecht zu finden.

Danke für euren Input!

xtrm

social assassin
Avatar
Registered: Jul 2002
Location:
Posts: 11908
Man kann es definitiv über JS mit Angular einschränken in der Art, dass der Formular Absendebutton erst dann aktiviert ist, wenn keine falschen Zeichen in den Formularen drinnen sind und es wird live angezeigt, falls eine falsche Eingabe vorhanden ist. Wie ich das damals gemacht hab schau ich nachher mal nach.

Die Frage ist, mit was ihr das Formular umgesetzt habt.

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3457
du kannst theoretisch vor dem schreiben in die Datenbank noch via RegEx abfragen, ob nur a-z A-Z und 0-9 plus halt -., usw in den Textfeldern steht und anderenfalls einen Error zurückwerfen? Das ganze via anderem Zeichensatz lösen bringt dir eine lustige neue Dose Würmer, die du aufmachst, dann hat der Backoffice Mitarbeiter halt nichtmehr Александар in der Datenbank stehen sondern ?????????.

Garrett

Here to stay
Avatar
Registered: May 2003
Location: Wien
Posts: 1079
Hab mich grade testweise bei paar großen Firmen registriert, die nehmen erstaunlicherweise alle ohne Meckern chinesiche und kyrillische Sonderzeichen in Namens- und Adressfeldern an. Würd mich echt interessieren, wie das dann im Hintergrund in ihrer DB zusammenläuft.

Wir wollen halt nichts außer westeuropäische Zeichen (ISO8859-15 wäre total ausreichend für uns) bei uns in der DB. Diese kann zwar UTF-8, aber Folgesysteme, mit denen wir zusammen arbeiten, können es nicht.
Bearbeitet von Garrett am 26.03.2020, 15:56

xtrm

social assassin
Avatar
Registered: Jul 2002
Location:
Posts: 11908
Regex ist auch immer ein guter Tipp, ja. Aber nochmal, wie ist euer Formular technisch umgesetzt?

Garrett

Here to stay
Avatar
Registered: May 2003
Location: Wien
Posts: 1079
Zitat aus einem Post von xtrm
Aber nochmal, wie ist euer Formular technisch umgesetzt?
Soweit bin ich technisch leider gar nicht involviert, ich weiß nur, dass es eine Liferay Lösung sein wird. :(

xtrm

social assassin
Avatar
Registered: Jul 2002
Location:
Posts: 11908
Wenn du gar nicht so weit involviert bist, kannst du es eh nicht umsetzen und das ist etwas, worüber sich die Entwickler Gedanken machen sollten. Liferay ist anscheinend Java.

Viper780

Er ist tot, Jim!
Avatar
Registered: Mar 2001
Location: Wien
Posts: 48856
Liferay ist bei sowas sehr flexibel und sollte im Framework die Beschränkung einzelner Zeichen auf Felder können (Sorry mein wissen dazu ist leider etwas älter).

Solang ihr in UTF-8 (oder -16) speichert und das passend weiter gibt kann nichts passieren. Die Nachfolgenden Applikationen müssen beim Import halt in ihren jeweiligen Zeichensatz konvertieren.

Wenn da jemand kyrillische oder Pinyin Zeichen eingibt liegt das wohl daran das es sein Name ist

xtrm

social assassin
Avatar
Registered: Jul 2002
Location:
Posts: 11908
Pinyin ist die romanische Übersetzung von chinesischen Schriftzeichen (in die englische Aussprache), eine Pinyin Eingabe wäre also kein Problem ;).

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11900
Was auch immer ihr im Formular letztendlich genau macht, um das gewuenschte Verhalten herzustellen: Das Backend - also die Anwendung, die die Daten idR ueber das Formular entgegennimmt und dann weiterverarbeitet - darf sich auf keinen Fall darauf verlassen, dass die Restriktionen fuer das Formular auch auf all die Daten, die reinkommen, angewendet wurden.

Es empfiehlt sich heute, von ganz vorne bis ganz hinten auf UTF-8 kodiertes Unicode zu setzen. Ob das fuer euch moeglich ist, ist ziemlich sicher von diversen schon festgemachten Faktoren (Datenbanksystem hinter der Webapplikation z. B.) abhaengig. Da muss man sich genau informieren und das vorhandene System analysieren. Wenn das nicht geht, diktiert das Vorhandene die Moeglichkeiten, in die man sich entwickeln kann.

Laienhaftes Verstaendnis des Problemfeldes fuehrt meistens zu Applikationen, die fubar sind. Zum Einstieg in die Materie wuerde ich diesen knapp 17 Jahre lang in Wuerde gealterten Text empfehlen: https://www.joelonsoftware.com/2003...ets-no-excuses/

xtrm

social assassin
Avatar
Registered: Jul 2002
Location:
Posts: 11908
Ah, Joel on Software, da denke ich immer an den guten Artikel, warum man Software nicht immer gleich neu schreiben sollte :).

Gegi

Here to stay
Registered: Jan 2001
Location: Wien
Posts: 775
Die Joel on Software Artikel sind großteils noch immer sehr aktuell....
Bin mir nicht gnaz sicher ob das ein gutes Zeichen für die Branche ist... ;)

Garrett

Here to stay
Avatar
Registered: May 2003
Location: Wien
Posts: 1079
Wenn ich das Thema nochmals aufmachen darf und man jetzt weniger den technischen Background betrachtet:

Bei den ÖBB kann man tatsächlich den kompletten Unicode Zeichensatz im Userprofil eingeben:
click to enlarge

Was hat das bitte für Auswirkungen auf die nachgelagerten Systeme und Prozesse? Man holt sich dadurch ja potentiell viel Müll in die Systeme. Ich denke da an den armen Backoffice Mitarbeiter, der die Namen nicht mehr finden kann und die Druckerei der Vorteilscards, welche nur mehr Kästchen auf die Karte druckt.

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19585
Zitat
und die Druckerei der Vorteilscards, welche nur mehr Kästchen auf die Karte druckt.
Dann sollte man halt alle Systeme auf UTF-8 oder -kompatibel umstellen. Ich verstehe nicht warum das heutzutage immer noch ein Problem ist ... ist es vermutlich eh nicht, nur das die Firmen meist immer noch uralte "gewachsene" Systeme verwenden die alle noch legacy Codepages verwenden weil keiner was neues bezahlen will (und wenn dann ist es programmiert wie shit von irgendwelchen Leuten aus Hyderabad).

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11900
Das ist nicht das Problem, das Garrett beschreibt bzw. meint. Angenommen, der User mit dem Penis/Eierfrucht-Emoji meldet sich bei einem Hotline-Mitarbeiter - wie wird der jemals einen Substring des angegebenen Namens in die Suchmaske in deren Backoffice-Anwendung eingeben koennen? Da fehlt "uns" in Mitteleuropa alleine schon die verbale Uebertragungsmoeglichkeit fuer die so kodierte Information.

Gerade in der Informatik ist "Unicode ueberall" in meiner ueber die Jahre gereiften Wahrnehmung oft mehr Problem als Loesung. Alleine die Tatsache, dass man sich mit unterschiedlichen Normalization Forms herumschlagen muss, ist ein riesiges Problem - u. a. deshalb, weil viele Softwareentwickler das gar nicht wissen, und es deshalb nicht tun :D Gepaart mit den auch im Jahr 2020 riesigen Unterschieden und Schwierigkeiten bei der Vollstaendigkeit der Implementierung in verschiedenen Programmiersprachen, Laufzeitumgebungen und z. B. auch Datenbanken stellt einen "korrekter" Unicode-Support oft vor in Wahrheit unloesbare (und oft auch sinnlose) Aufgaben.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz