PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (HTML-) Ausgabe und UTF-8


Gast
2007-03-23, 19:48:50
Hey Folks,

also habe mal eine generelle Frage zu UTF-8, da ich für Webanwendungen in Zukunft nurnoch UTF-8 benutzen will.

Prinzipiell schnell erklärt:

Wie sollen jegliche Sonderzeichen ( z.B. ©, ¬ etc. und auch ä, ü, ö ) im Quelltext angegeben werden, damit sie später beim Betrachter im Browser auch mit 100%iger Sicherheit richtig angezeigt werden?

Früher habe ich z.B. für 'ä' immer ä geschrieben, bei den anderen Umlauten entsprechend ebenso. Ist dies bei UTF-8 noch nötig? Das Forum hier zeigt ja auch korrekt an, obwohl ich die Sonderzeichen nur reinkopiert habe und nicht deren "HTML-Code" genommen habe.

Bin auf diese Seite gestoßen:

http://www.torsten-horn.de/techdocs/ascii.htm

Und da wird nebst Zeichen auch immer dieser "HTML-Code" erwähnt.
Wie ist der richtige Weg um sauber zu arbeiten?


mfg thx :)

darph
2007-03-23, 20:02:49
Du brauchst die Sonderzeichen nicht zu umschreiben, weil sie ja eben in Unicode eindeutig bezeichnet sind. Das Problem bei den verschiedenen Codepages ist ja, daß ein Zeichen je nach Codepage unterschiedliche Bytecodierung haben kann. Dem gehst du mit Unicode aus dem Weg.

Du solltest dann aber auch darauf achten, daß die Ausgabe wirklich Unicode ist. Dazu gehört auch, die ganzen involvierten Dateien entsprechend zu speichern. Einfach "des is utf-8" hinzuschreiben reicht nicht.

Gast
2007-03-23, 20:05:13
Wie sollen jegliche Sonderzeichen ( z.B. ©, ¬ etc. und auch ä, ü, ö ) im Quelltext angegeben werden, damit sie später beim Betrachter im Browser auch mit 100%iger Sicherheit richtig angezeigt werden?

Früher habe ich z.B. für 'ä' immer ä geschrieben, bei den anderen Umlauten entsprechend ebenso. Ist dies bei UTF-8 noch nötig?
nur die reservierten xml-zeichen (das sind &,<,> und anführungszeichen) musst du als entity einbinden, für alles andere kannst du direkt die utf-8 kodierten zeichen reinschreiben.
damit das ganze vom browser richtig angezeigt wird, muss der http server beim ausliefern der seite natürlich auch utf-8 als kodierung angeben (im content-type header).

die entities (das was du "HTML-Code" nennst) werden ansonsten nur benötigt wenn du aus irgendwelchen gründen den quelltext komplett in ascii halten musst. durch deren verwendung wird die seite sonst nur unötig größer;
"ä" in utf-8 belegt 2 Bytes,
"&auml;" belegt gleich 6 Bytes

beachte dass unter windows die meisten texteditoren nur mit der veralteten iso-8859 kodierung arbeiten, da das dort aus kompatibilitätsgründen seit win3.11 mitgeschleppt wird. utf-8 geht dort in der regel nur mit umfangreicheren editoren die extra einstellungen dafür anbieten.

Gast
2007-03-23, 20:13:19
Danke soweit.

Also wäre

<p>böse</p> ohne Probleme Äaquivalent zu <p>b&ouml;se</p> ?

Ok soweit, sogut. Du hast ja schon die Dateien drumherum angesprochen.
Also muss man beachten, jede .html Datei als UTF-8 abzuspeichern. Wie sieht es bei MySQL Dateien aus? Reicht da, jede Spalte als UTF-8 zu definieren?

Kurze Checkliste:

1. UTF-8 im Header der HTML-Datei angeben
2. Jede Datei, die Bezug dazu hat oder die datei selbst als UTF-8 abspeichern (also auch xml und php Dateien?)
3. MySQL Spalten ebenfalls auf UTF-8 stellen.

Hab ich da was vergessen?


mfg

darph
2007-03-23, 20:39:55
beachte dass unter windows die meisten texteditoren nur mit der veralteten iso-8859 kodierung arbeiten, da das dort aus kompatibilitätsgründen seit win3.11 mitgeschleppt wird. utf-8 geht dort in der regel nur mit umfangreicheren editoren die extra einstellungen dafür anbieten.
Notepad, Datei speichern unter. ;(

Bequemer geht's aber wirklich mit Code Editoren wie dem Notepad++.


An den anderen Gast - ja, das sollte reichen.

Sephiroth
2007-03-24, 00:18:28
Notepad nutzt Byte Order Mark (BOM).
Bei BOM muß man nur aufpassen, wenn man es bei PHP Dateien einsetzt und z.B. Header senden will und BOM nicht unterstützt wird. Das führt zu Fehlern, da bei BOM bereits Zeichen ausgegeben werden.

siehe dazu auch: http://de.wikipedia.org/wiki/Byte_Order_Mark

Gast
2007-03-24, 01:17:41
1. UTF-8 im Header der HTML-Datei angeben
was in der html datei als "header" steht ist relativ egal, wichtig ist der HTTP-header, der vom server vor der eigentlichen datei gesendet wird!

Gast
2007-03-24, 14:08:07
Und wo kann ich das angeben?


<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>New Document</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>

</body>
</html>


Habe eigentlich dabei an die 7. Zeile hier gedacht.

mfg

Gast
2007-03-24, 14:08:58
Sorry, die 6. natürlich.

Xmas
2007-03-24, 15:42:54
Das musst du dem HTTP-Server beibringen (unterschiedlich je nach Server, welchen benutzt du/dein Hoster?). Es sollte natürlich trotzdem auch im HTML-Dokument angegeben sein, so dass es auch passt wenn man die HTML-Datei von einem Datenträger öffnet.

Gast
2007-03-24, 16:26:04
Und wo kann ich das angeben?
überhaupt nicht, ich sagte doch dass der _vor_ der datei gesendet wird.
wenn du glück hast hat dein hoster standardmäßig utf-8 eingestellt (ist bei allen aktuellen linux distributionen der fall, also durchaus möglich), dann musst du gar nichts machen.
ansonsten musst du eine scriptsprache verwenden, die den header vor der dateiübertragung setzt, geht z.B. mit php (http://de.php.net/manual/de/function.header.php)