Eure Meinung zu Umlauten(Ä,Ü, usw.) in Variablen

Alles, was PHP betrifft, kann hier besprochen werden.

Eure Meinung zu Umlauten(Ä,Ü, usw.) in Variablen

Postby CHRISS76 » 01. March 2005 08:58

Moin, moin

ich habe als Anfänger mal eine Frage an die Profs.
Ich habe mir eine kleine Linkliste mit Datenbankabfrage gebastelt, bei der es auch Kategorien gibt, die Umlaute (Ä,Ü,ö usw.) im Namen haben, z.B.
die Kategorie "Ernährung". Diese Umlaute werden somit auch in Variablen übergeben und auf der Webseite angezeigt!

Das funktioniert auch problemlos (auch mit dem IE), allerdings habe ich Zweifel, dass das sauber ist und teilweise doch nicht funktioniert, was meint Ihr dazu?

Ich möchte eigentlich ungerne Ä z.B. durch Ae ersetzen, weil das eben nicht der deutschen Sprache entspricht!

Wenn ich etwas ändern muss, dann wie und zu welchem Zeitpunkt, also beim Anlegen einer neuen Kategorie oder bei der Ausgabe auf der Webseite?

Danke im voraus und Grüsse

Chris
CHRISS76
 
Posts: 27
Joined: 19. August 2004 14:38

Postby borschtel1 » 01. March 2005 09:44

hallo chris,

der wert der variable kann ohne probleme umlaute enthalten, nur die ausgabe auf der webseite wäre so nicht schön.

gucke dir aber mal die funktion htmlentities an.

http://de2.php.net/manual/de/function.htmlentities.php

diese funktion wandelt alle sonderzeichen in html-code um und dann brauchst du kein ae oder soetwas zu schreiben.

gruß
ThorstenT
http://www.logospiel.de - Das Spiel mit den Logos
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29

Postby Wiedmann » 01. March 2005 09:50

nur die ausgabe auf der webseite wäre so nicht schön.

Wegen?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby borschtel1 » 01. March 2005 12:17

Es kann passieren, dass Browser, Suchmaschinen oder sonstiges Sonderzeichen falsch darstellen. Das geschieht, wenn der benutzte Zeichensatz nicht zur Verfügung steht. Der Broswer weiß dann z.B. nicht, wie er dieses Zeichen interpretieren soll. Wenn du die Sonderzeichen aber html-codierst, sollte der Browser damit keine Probleme mehr haben.

Für eine genauere Beschreibung siehe hier: http://de.selfhtml.org/html/allgemein/zeichen.htm

Gruß
ThorstenT
http://www.logospiel.de - Das Spiel mit den Logos
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29

Postby Wiedmann » 01. March 2005 12:34

Umlaute entsprechen einfach nicht den HTML-Richtlinien.

Außerdem wollen wir doch kein falsches HTML schreiben

Tjo, würden die Leute korrektes HTML schreiben, kann/soll man auch, ganz nach den Regeln, die Entities weglassen (bis auf 4):
http://www.w3.org/TR/html401/charset.html#h-5.3.2

Das ganze funktioniert natürlich nur, wenn man das Character Encoding korrekt angibt:
http://www.w3.org/TR/html401/charset.html#h-5.2.2

auf der anderen Seite, wenn schon Entities, dann Nummerische:
http://www.w3.org/TR/xhtml1/#h-4.12

htmlentities() leistest das aber nicht. Sinnvoll ist dagegegen die Funktion htmlspecialchars(). mit der sollte man Strings vor der Ausgabe schonmal behandeln (grad bei der Übernahme aus Textfeldern oder der DB).

Zusammenfasend:
Man gibt koorekt ein Charset an, schreibt die normalen Umlaute wie sie sind. Und hat in Folge keine Probleme, weder bei der Ausgabe an den Browser, Behandlung der Strings in PHP oder einer DB (ein ä ist halt ein ä ist ein ä...)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Danke und nochwas

Postby CHRISS76 » 01. March 2005 14:04

Hallo,

vielen Dank für Eure Antworten!
Also wenn ich das Recht verstehe, dann mache ich gar nichts, sondern füge nur ein Charset ein (Zwischenfrage: wie füge ich ein Charset mit PHP ein?)

Damit sollte es dann keine Probleme mit Umlauten geben, auch mit Sonderzeichen wie ß nicht?

Zur Sicherheit sollte ich dann aber vor Ausgabe des Strings diesen mit htmlentities() prüfen, richtig?

Danke und Grüsse Chris
CHRISS76
 
Posts: 27
Joined: 19. August 2004 14:38

Postby Wiedmann » 01. March 2005 14:22

Also wenn ich das Recht verstehe, dann mache ich gar nichts, sondern füge nur ein Charset ein (Zwischenfrage: wie füge ich ein Charset mit PHP ein?)

Das kannst du in dem oben genannten Link (der Zweite) nachlesen. Das hat auch nichts mit PHP zu tun, sondern muss in dem HTML das zum Browser geschickt wird drin stehen.

Den grundsätzlichen Aufbau eines HTML-Dokumentes kennst du?

Zur Sicherheit sollte ich dann aber vor Ausgabe des Strings diesen mit htmlentities() prüfen, richtig?

Nein. mit htmlentities() prüft man nichts, sondern wandelt Zeichen um. Aber eben das sollst du ja nicht benutzen. Wenn, dann sollst du htmlspecialchars() benutzen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Danke o.T.

Postby CHRISS76 » 07. March 2005 10:31

Danke an alle!

Grüsse Chris
CHRISS76
 
Posts: 27
Joined: 19. August 2004 14:38


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests