Zum Inhalt springen
ThreadHTML5 & CSS

Umstellung auf UTF-8

Kategorie
HTML5 & CSS
Antworten
4
Verfasst von: ehemaliges Mitglied Datum: 15.05.2010, 11:56 Uhr
Archiv-KommentarArchiviert, nicht priorisiertHTML5 & CSS

Redaktionelle Einordnung

Diese archivierte Diskussion behandelt Umstellung auf UTF-8 aus Sicht der Rubrik HTML5 & CSS.

Die Diskussion bleibt als Archiv nutzbar. Für die aktuelle Bewertung empfehlen sich ergänzend neuere Artikel, Tools oder eine konkrete Analyse.

Sinnvoll nutzbar bleibt der Thread vor allem als historischer Kontext, für typische Fragestellungen und zur Einordnung älterer Empfehlungen.

Einige im historischen Thread genannte Tools, Dienste oder externe Links könnten heute nicht mehr verfügbar oder inhaltlich überholt sein. Nutzen Sie sie bitte nur mit zusätzlicher Prüfung.

Startbeitrag

Archivierter Thread aus dem Seitenreport-Forum.

Zur Kategorie
ehemaliges Mitglied
Threadstart · HTML5 & CSS · 15.05.2010, 11:56 Uhr

Hallo,

nachdem ich mit Hilfe von Seitenreport die Seite unserer Schule doch schon sehr optimiert habe, hänge ich noch immer an einem Punkt. Dies ist, die Umstellung vom ISO auf UTF-8 Zeichensatz. Der Content wird wunderbar übernommen, wir haben keine CSS-Probleme und Formulardaten werden korrekt übernommen.
Im Head-Bereich jedoch bzw. in einem Tag-Attribut, werden die Umlaute der deutschen Sprache nicht angenommen und HTML-Entities funktionieren ja auch nicht in Attributen.

Ich hoffe jemand hat eine Lösungsidee?

MfG

Antworten

4 Beiträge
gelöschter Benutzer · 15.05.2010, 15:10 Uhr
Antwort

Hallo Jürgen

Setze das mal in deinen Head Bereich rein.

[html]<head>
[/html]

Wenn das nicht ausreichen sollte liegt es wohl an dem Format in dem du die Seite abspeicherst.

Gruß
Jörg

gelöschter Benutzer · 15.05.2010, 16:44 Uhr
Antwort

Schaltkreis schrieb:

und HTML-Entities funktionieren ja auch nicht in Attributen.



Sicher ?

gelöschter Benutzer · 16.05.2010, 12:22 Uhr
Antwort

Hallo Jürgen,

wenn du die Seite mit dem Validator parst, erhälst du u.a. folgende Ausgabe:

Validator schrieb:
Encoding: iso-8859-1


Wenn du dem Validator UTF-8 als Vorgabe gibst, kann er die Seite nicht parsen, weil er unbekannte Zeichen findet (Opera meldet den selben Fehler wenn man UTF-8 erzwingt).

Zuerst solltest du dir überlegen, ob du die Seite wirklich nach UTF-8 konvertieren möchtest. Eine Seite nachträglich nach UTF-8 zu konvertieren bringt meistens ein paar Komplikationen mit sich und der Vorteil hält sich für rein deutschsprachige Seiten in Grenzen.

Wenn du deine Seite immer noch konvertieren möchtest, solltest du zuerst den Charset der Datei ändern.

Bei der XML-Dekleration solltest du den Charset auf UTF-8 stellen:
[html]<?xml version="1.0" encoding="UTF-8" standalone="no"?>[/html]
Alternativ kannst du sie auch weglassen, wenn du UTF-8 verwendest. Da die XML-Dekleration Probleme bei allen Versionen des Internet Explorer kleiner 7 verursacht, würde ich dir dazu auch raten.

Zudem solltest du den Header noch ändern mit folgendem PHP-Befehl:
<?php
header(\'Content-Type: application/xhtml+xml; charset=utf-8\');

Den Internet Explorer 6 musst du allerdings gesondert behandeln, da er beim Content-Type application/xhtml+xml einen Download-Dialog benötigt. Ihm solltest du folgenden Header schicken:
<?php
header(\'Content-Type: text/html; charset=utf-8\');

Das ist dann natürlich nicht mehr korrekt, aber das muss man in Kauf nehmen, wenn man XHTML 1.1 für den Internet Explorer 6 ausgeben möchte.
Ob der Browser den Content-Type application/xhtml+xml unterstützt, kannst du mit der Variable $_SERVER[\'HTTP_ACCEPT\'] herausfinden.
Einen Artikel dazu findest du hier: http://meiert.com/de/publications/articles/20041004/

Der von Jörg vorgeschlagene Meta-Tag bringt leider nicht viel, kann bei XHTML 1.1 in einigen Browsern sogar zu Problemen führen.

Nachdem das ganze nun als UTF-8 ausgegeben wird, muss man noch den Inhalt nach UTF-8 konvertieren. Wenn die Seiten alle im Filesystem liegen, ist es relativ einfach. Die Dateien als UTF-8 speichern und dann die Sonderzeichen zu erstzen.

Schwieriger wird es, wenn die Daten in der Datenbank liegen. Du müsstest die Datenbank auf UTF-8 umstellen (und die Daten darin natürlich auch) und direkt nach dem Verbinden zu MySQL folgendes ausführen:
<?php
mysql_query("SET NAMES \'utf8\'");


Die Daten sollten dann alle in UTF-8 vorliegen und nicht mehr in ihre Entities umgewandelt werden müssen.


HTML-Entities sollten auch in den Tag-Attributen funktionieren. Wenn du allerdings nur alle Daten in Entities und die Formatierung auf UTF-8 umstellst, dann hast du in der Datenbank zwei Charsets enthalten, das kann zu Problemen führen.

gelöschter Benutzer · 21.05.2010, 01:40 Uhr
Antwort

Ja Browserweiche für XHTML 1.1 ist schon eingebaut. Nur die, die auch wirklich XHTML können kriegen application/xhtml, IE5, 5.5 und 6 werden schon lange mit text/html gefüttert. Dass <?xml version="1.0" encoding="UTF-8" standalone="no"?> Probleme verursachen würde, weiß ich auch.
Das Meta-Tag mit content-type hatten wir früher eingebaut, haben es dann aber lieber durch <?xml ersetzt.

Der letzte Teil der Antwort hat mir dann den wichtigen Punkt gezeigt. Ich habe einfach vergessen, die Dateien als UTF-8 zu kodieren und die Datenbank ist auch nicht UTF.

Ein Kracher....75 PHP dateien und die ganze Datenbank nach UTF-8 konvertieren ist mir aktuell ein wenig zu viel Arbeit. Trotzdem danke für den Tipp. Eventuell habe ich ja mal einen freien Tag mit viel Langeweile. Die Frage bleibt immer wozu man es eigentlich tun sollte.

MfG

PS: Also wenn ich bei <meta name="geo.placename" content="Dahlwitzer Straße aus dem ß ein ß mache, dann wird das &szlig ja an dieser Stelle angezeigt im Quelltext, so wie jedes andere Entity auch. Woher weiß man nun, was die Suchmaschine an der Stelle interpretiert?