utf8_encode Automatisieren?

Mik3e

Erfahrenes Mitglied
Hi zusammen,

Wir bieten ein internationales Service an. Das Problem dabei sind die Sprachen.
Die Daten werden in einer MySQL DB gespeichert (MySQL 5.0.1).
Kollation: utf8_general_ci

Damit ist es möglich, alle international anerkannten Zeichen darzustellen, beispielsweise:
Español
Français
etc.

Die Website auf der diese Sonderzeichen ausgegeben werden, ist ebenfalls als UTF-8 notiert:
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Mein Problem ist nun, dass man bei der Ausgabe über PHP immer [phpf]utf8_encode[/phpf] ausführen muss.

Also zum Beispiel:
PHP:
echo utf8_encode('Français');
// -> Gibt aus: "Français"
echo "Français"
// -> Gibt aus: "Fran?ais"
Kennt irgendjemand eine Möglichkeit, wie man sich dieses encoden bei jederm Output sparen kann
Danke & Ciao,
Mike
 
Die Zeichenkodierung sollte bereits im HTTP-Header notiert sein. Außerdem kommt es auch darauf an, mit welcher Kodierung das Skript selbst kodiert ist. Denn ist es bereits mit UTF-8 kodiert, sind die UTF-8-Funktion nicht mehr nötig.
 
Hm..
Gibt es eine vordefinierte HTTP_HEADER Variable, in der ich die Notation abfragen kann?
Weil vor lauter hin und hercodieren verlier ich bald den Durchblick ;)
 
Hallo!

Mik3e hat gesagt.:
.....in der ich die Notation abfragen kann?.....
Meinst Du evtl. $_SERVER['HTTP_ACCEPT_LANGUAGE']?
Würde ich nicht machen..... lass den User lieber selber seine bevorzugte Sprache auswählen (z.b. über Länderfähnchen).
Denn 1. könnte sich ein Browser als was anderes zu erkennen geben als er tatsächlich ist.
Und 2., was währe wenn ich als Deutscher in Frankreich Urlaub mache und dort z.b. aus einem Internet Cafe auf deine Seite gehe?
Dann würde der Browser u.U. als akzeptierte Sprache Französisch an deine Seite senden und deine Seite wird mir dann in französisch angezeigt..... obwohl es evtl. auch eine deutsche Seite gibt.

Gruss Dr Dau
 
Hi,

Ne, das ist ne andere Baustell :)
Das automatische erkennen der Sprache, ist wieder ein anderes Kapitel. So wie Du es vorgeschlagen hast, würde ich es sowieso niemals umsetzen.

Ich würde folgende Möglichkeit in Betracht ziehen:
1. Standarmäßig wird jenes Sprachpaket geladen, dass den Browsereinstellungen entspricht. Wird kein passendes Sprachpaket gefunden, dann wird die gewählte Standard-Sprache angezeigt

2. Hat der User jederzeit die Möglichkeit, die Sprache selbst zu wählen.

Das ist die beste und eleganteste Variante würd ich mal sagen..
Dennoch hat das nichts mit meinre ursprünglichen Frage zu tun. Ich wollte nur wissen, ob man sich das UTF-8 encoden beim Ausgeben von Datenbankinhalten (die als Koalition UTF-8 international eingetragen haben) irgendwie ersparen kann.

Danke & Ciao,
Mike
 
Hmm, hast Du es mal mit einem z.b. lang="fr" in deinem META-Tag versucht?
SelfHTML hat gesagt.:
lang
Gibt die Landessprache an, die innerhalb des HTML-Elements verwendet wird. Interessant bei mehrsprachigen Dateien - aber auch für Suchmaschinen im Internet. Als Angabe ist ein standardisiertes Sprachenkürzel erlaubt, z.B. de für deutsch, en für englisch, fr für französisch, it für italienisch oder es für spanisch. Einzelheiten dazu und eine vollständige Übersicht finden Sie im Abschnitt Sprachenkürzel.
 
Mik3e hat gesagt.:
Ich wollte nur wissen, ob man sich das UTF-8 encoden beim Ausgeben von Datenbankinhalten (die als Koalition UTF-8 international eingetragen haben) irgendwie ersparen kann.
Aus welchen Parteien setzt sich denn die UTF-8-Koalition zusammen? :D Das was du meinst, nennt sich meines Wissens nach Kollation.

Zum Problem: folgende Zeile am Anfang des Scripts könnte Wunder wirken:
PHP:
ob_start(create_function('$str', 'return utf8_encode($str);'));
Dadurch wird jede Ausgabe automatisch durch die angegebene (anonyme) Funktion gejagt und in einen Zwischenspeicher geschrieben. Am Ende der Scriptausführung erfolgt dann automatisch die Ausgabe.
 
Zurück