XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   (X)HTML (http://xhtmlforum.de/forumdisplay.php?f=72)
-   -   Zeichenkodierung: Welches Charset? UTF-8? ISO 8859-1? (http://xhtmlforum.de/showthread.php?t=41345)

Dullivan 15.08.2006 20:34

Zeichenkodierung: Welches Charset? UTF-8? ISO 8859-1?
 
Habe mich schon immer gefragt, was die Vor- und Nachteile der diverser Charsets sind. ein paar Fragen:
1. Gibt es ein Charset, dass man global - praktisch für jeden Anlass - empfehlen kann?
2. Muss man bei UTF-8 z.B. die Umlaute nicht mehr maskieren?
3.Gibt es Probleme mit unterschiedlichen Browsern?
4.Muss ich bei XHTML dasCharset zweimal definieren wie in diesem Beispiel?
Code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Sieht für mich so aus, als wenn man es einmal für die Interpretierung als XML- und einmal für die Interpretierung als (X)HTML-Dokuments festlegt!?

Danke schon mal!!

Despairing 15.08.2006 21:26

1. utf-8.
2. Nein. :)
3. Nein.
4. In diesem Code befindet sich ja zweimal die Angabe utf-8. Das eine utf-8 bezieht sich auf XML und das andere utf-8 bezieht sich auf den Inhalt deiner Seite. Wenn du utf-8 verwenden möchtest, dann brauchst du das nur im Meta-Tag anzugeben. Die Zeile <?xml version="1.0" encoding="UTF-8"?> kannst bzw. solltest du weglassen, da in manchen Browsern es zu Fehldarstellungen kommen kann. Übrigens: Wenn du PHP nutzt, kannst du Charset auch über ein kurzes PHP Script definieren.

netspy 15.08.2006 22:15

4. Die erste Zeichensatzkodierung im XML-Prolog stört den IE, weshalb man sie weglassen sollte. Sie ist in XHTML-Dokumenten auch nicht notwendig. Die zweite Angabe als Meta-Charset ist für eine echtes XHTML-Dokument (welches als XML ausgeliefert wird) unnütz und wird von einem Parser ignoriert.

Optimal ist es, wenn die verwendete Zeichensatzkodierung im HTTP-Header gesendet wird. Dies lässt sich im Normalfall leicht in der .htaccess machen:

Code:

AddDefaultCharset utf-8

# evtl. auch noch:
AddCharset utf-8 .php .html .xhtml

Mario

heiko_rs 16.08.2006 03:48

Was Du bedenken bzw. wissen solltest: Wenn Du Emails per Formular verschicken möchtest, solltest Du diese in iso-8859-1 umwandeln lassen (kein Problem mit utf8_decode() oder iconv(), sofern Dein Hoster PHP bietet). Denn viele Email-Programme und Webmailer (u.a. GMX und Hotmail) zeigen Emails in utf-8 (trotz entsprechender Angabe im Email-Header) einfach als iso-8859-1 an, so daß alle Sonderzeichen versaut sind.

Das kann der Empfänger zwar durch manuelle Umstellung des Zeichensatzes ändern, aber von dieser Möglichkeit dürften 99% aller Empfänger nichts wissen. Solltest Du allerdings der einzige Empfänger sein, wäre das natürlich wiederum alles egal.

Zitat:

Zitat von netspy
Code:

AddDefaultCharset utf-8

# evtl. auch noch:
AddCharset utf-8 .php .html .xhtml


Es ist mir kürzlich tatsächlich bei einem Hoster passiert, daß ich beide Zeilen brauchte: Ich hatte zuerst nur die zweite Zeile angegeben, da auch das CSS in utf-8 ausgeliefert werden soll (d.h. die AddCharset-Zeile um .css erweitert). Aber aus irgendeinem Grunde wurde dabei .php (im Gegensatz zu .html und .css) ohne Zeichensatz im Header ausgeliefert, obwohl .php in der .htaccess stand. Als ich dann nur die erste Zeile nahm, wurde CSS nicht mehr als utf-8 ausgeliefert. Also mußte ich tatsächlich beide Zeilen angeben, damit alles perfekt funktionierte.

netspy 16.08.2006 10:09

Zitat:

Zitat von heiko_rs
Denn viele Email-Programme und Webmailer (u.a. GMX und Hotmail) zeigen Emails in utf-8 (trotz entsprechender Angabe im Email-Header) einfach als iso-8859-1 an, so daß alle Sonderzeichen versaut sind.

Über Hotmail kann ich nichts sagen aber GMX hat keine Probleme mit UTF-8 kodierten E-Mails - die werden korrekt dargestellt. Auch die meisten MUAs sollten mittlerweile damit klar kommen.

Mit ISO-8859-1 geht man zwar auf Nummer sicher, UTF-8 wird aber beim größten Teil aller Empfänger auch richtig angezeigt - vorausgesetzt, die E-Mail ist richtig kodiert.

Zitat:

Zitat von heiko_rs
Aber aus irgendeinem Grunde wurde dabei .php (im Gegensatz zu .html und .css) ohne Zeichensatz im Header ausgeliefert, obwohl .php in der .htaccess stand.

Für PHP wäre diese Zeile eigentlich die passende:
Code:

php_value default_charset UTF-8
Die meisten Hoster dürften dies aber nicht erlauben.

Mario


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:23 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023