Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Browserweiche bzgl. Umlaute

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
|SONY|
PostRank 5
PostRank 5
Beiträge: 333
Registriert: 17.04.2006, 11:56
Wohnort: Der Norden ruft

Beitrag von |SONY| » 30.05.2009, 13:46

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

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Anonymous

Beitrag von Anonymous » 30.05.2009, 13:49

na, dann definiere die Ausgabe so das es auch als utf-8 angezeigt wird...

|SONY|
PostRank 5
PostRank 5
Beiträge: 333
Registriert: 17.04.2006, 11:56
Wohnort: Der Norden ruft

Beitrag von |SONY| » 30.05.2009, 14:03

Habe ich doch eigentlich !?
header('Content-Type: text/html; charset=utf-8');

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

Jetzt anfragen: 0511 / 300325-0.


Hobby-SEO
PostRank 5
PostRank 5
Beiträge: 337
Registriert: 04.06.2005, 13:56

Beitrag von Hobby-SEO » 30.05.2009, 14:39

|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

Lord Lommel
PostRank 10
PostRank 10
Beiträge: 3227
Registriert: 18.02.2008, 02:43
Wohnort: Halle / Saale

Beitrag von Lord Lommel » 31.05.2009, 02:37

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. ^^

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 31.05.2009, 09:40

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.

|SONY|
PostRank 5
PostRank 5
Beiträge: 333
Registriert: 17.04.2006, 11:56
Wohnort: Der Norden ruft

Beitrag von |SONY| » 04.06.2009, 18:37

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

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 04.06.2009, 19:07

|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.

Hobby-SEO
PostRank 5
PostRank 5
Beiträge: 337
Registriert: 04.06.2005, 13:56

Beitrag von Hobby-SEO » 05.06.2009, 05:42

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.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag