Seite 1 von 1

Browserweiche bzgl. Umlaute

Verfasst: 30.05.2009, 13:46
von |SONY|
Hallo zusammen,

ich habe ein Script was mit Unicode (UTF-8) erstellt wurde. Nun habe ich aber wiederrum das Problem, wenn man sich das mit Westeuropäisch (Windows) anschaut Menü z.B. dann so erscheint: Menü

Könnt Ihr mir bitte dabei helfen wie ich das mit wenig Kenntniss hinbekomme ?

Vielen Dank
Sony

Verfasst:
von

Verfasst: 30.05.2009, 13:49
von net(t)worker
na, dann definiere die Ausgabe so das es auch als utf-8 angezeigt wird...

Verfasst: 30.05.2009, 14:03
von |SONY|
Habe ich doch eigentlich !?
header('Content-Type: text/html; charset=utf-8');

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: Browserweiche bzgl. Umlaute

Verfasst: 30.05.2009, 14:39
von Hobby-SEO
|SONY| hat geschrieben:Nun habe ich aber wiederrum das Problem, wenn man sich das mit Westeuropäisch (Windows) anschaut
Hallo,

meinst Du damit, dass die automatische Zeichensatzerkennung nicht funktioniert? Oder schaltest Du absichtlich auf ISO-8859-1 um? (Dann ist klar, dass die Umlaute nicht richtig dargestellt werden.)

Kommen die Daten wie das Wort "Menü" aus einer Datenbank, oder ist das im Script hardcodiert?

Hast Du bereits überprüft, welcher Header wirklich gesendet wird (z.B. mit dem Firefox Add-on Live HTTP headers.)

[Wenn es nur ein kleines Script ohne DB-Anbindung ist, fährst Du wahrscheinlich am besten, wenn Du einfach ü durch ü ersetzt etc.]

Schönes Wochenende
Wolfgang

Verfasst: 31.05.2009, 02:37
von Lord Lommel
Hast du im ausgegebenen HTML-Dokument auch per Metatag die Codierung auf Unicode gesetzt ? Und hast du in der Ausgabe auch alle Zeichen in Unicode umgewandelt ? Wenn du eins davon vergisst, dann hast du schnell son Kauderwelsch. Ist mir auch schon x-mal passiert. ^^

Verfasst: 31.05.2009, 09:40
von Mork vom Ork
Lord Lommel hat geschrieben:Hast du im ausgegebenen HTML-Dokument auch per Metatag die Codierung auf Unicode gesetzt?
Tut nicht not, wie er schon schrieb, schickt der die richtige Angabe per HTTP. Was er natürlich nicht machen sollte, ist hier utf-8 sagen und da windows-1252.

Rauszufinden ist erstmal, wo die verunglückten Zeichen herkommen. Falls sie nicht aus dem Skript stammen, liegt Wolfgangs Vermutung nahe, dass sie in der externen Quelle falsch kodiert sind. Der übliche Verdächtige ist die Datenbank MySQL, die zwar sehr gut mit verschiedensten Kodierungen hantieren kann - aber man muss ihr auch sagen, was man will. Per Vorgabe spuckt sie nämlich meistens iso-8859-1 aus, und das sieht dann als utf-8 gekennzeichnet so aus wie im vorliegenden Problem.

Verfasst: 04.06.2009, 18:37
von |SONY|
hallo zusammen,

folgendes konnte ich als laie in erfahrung bringen. es scheint an der datenbank bzw. tabell zu liegen, denn wenn ich darin

z.B.: Bayern München

schreibe, erscheint der umlaut falsch auf der seite. ändere ich in der datenbank bzw. der tabelle es auf folgendes Bayern München, erscheint es richtig auf der seite mit ü, allerings bekommen dann die user in mails das auch so übermittelt = Bayern München

varchar(255) utf8_unicode_ci steht hinter dem namen !?

mfg
sony

Verfasst: 04.06.2009, 19:07
von Mork vom Ork
|SONY| hat geschrieben:ändere ich in der datenbank bzw. der tabelle es auf folgendes Bayern München, erscheint es richtig auf der seite mit ü
Du gibst die Daten ungesichert aus? Unklug, auch wenn's nur Daten sind, die du selbst eingegeben hast. Wenn du nicht ausdrücklich willst, dass HTML verwendet werden kann, dann filtere Ausgaben in die Seite immer mit htmlspecialchars().
varchar(255) utf8_unicode_ci steht hinter dem namen !?
Das hat nichts zu sagen bzw. besagt nur, welcher Zeichenumfang gespeichert werden kann.

Wichtig ist, wie die Daten von der Datenbank an das Skript übermittelt werden. Nachdem du die Verbindung zur Datenbank hergestellt hast, sende set names "utf8", damit sie dir den Kram utf-8-kodiert schickt (und Empfangenes so behandelt) und nicht, wie meist standardmäßig eingestellt, als iso-8859-1.
Beachte aber, dass du dann auch für die E-Mails utf-8 bekommst, d.h. vorher eventuell wieder umstellen oder, besser noch, die Content-Type-Zeile auch in den E-Mails verwenden musst.

Dieser Verbindungszeichensatz lässt sich auch in der MySQL-Konfiguration speichern, so dass du auf set names verzichten kannst - das ist aber vorher gut zu überbedenken, da global gültig, und man muss logischerweise darauf Zugriff haben.

Weiteres unter https://dev.mysql.com/doc/refman/5.1/de ... ction.html.

Verfasst: 05.06.2009, 05:42
von Hobby-SEO
Eine nützliche PHP-Anweisung:

mysql_set_charset('utf8', $db_link);

statt dem set names-Zeugs.

Wenn die Daten aus einem Formular kommen, ein Tipp, der auf php.net gepostet wurde:

Code: Alles auswählen

// Fixes the encoding to uf8
function fix_encoding($in_str)
{
	$cur_encoding = mb_detect_encoding($in_str);
	
	if ($cur_encoding == "UTF-8" && mb_check_encoding($in_str, "UTF-8"))
		return $in_str;
	else
		return utf8_encode($in_str);
}
Auf php.net stehen in den Kommentaren zu den einzelnen Funktionen übrigens des Öfteren sehr interessante Informationen.

Viel Spaß weiterhin
W.