Seite 1 von 1

HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 17:40
von Latzhosenträger
Moin Moin,

ich finde gerade nicht das entsprechende. Ich weiß, dass man mehrere Dinge im Kopf einer HTML-Datei eingeben muss, damit man nicht bei jedem Umlaut (oder ß) extra ä etc. eintippen muss sondern die einfach korrekt umgesetzt werden.

Kann mir gerade jemand auf die Sprünge helfen? Müsste eine Metaangabe und der Doctype sein, glaub ich.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 18:05
von Flummi
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 18:08
von Latzhosenträger
pFT hat geschrieben:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Danke. Hatte ein anderes Charset (iso-8859-1).
Aber bis jetzt klappt das immer noch nicht. Wenn es sich um eine PHP Datei handelt muss man sicher noch etwas anderes hinzufügen, oder?

Das ist eine Datei mit ganz normalem HTML, PHP nutze ich nur für den Content. Die Umlaute werden nicht im Content (mittels include) angezeigt, aber auch nicht im Footer, der nicht in PHP geschrieben ist, angezeigt.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 18:40
von Latzhosenträger
=snigg= hat geschrieben:spiel mal mit utf8_decode bzw encode rum ^^
Wie meinen?^^
=snigg= hat geschrieben:jenachdem wo dein content herkommt (zb aus ner db) kannste das auch direkt in den db-befehl integrieren
Aus anderen PHP-Dateien per include.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:06
von Flummi
header("Content-type: text/html; charset=UTF-8");

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:16
von Latzhosenträger
Mittlerweile verzweifel ich.

Kopf der index-php

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">

<?php
header("Content-Type: text/html; charset=utf-8");
?>	   
	   
<html>
  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="content-language" content="de">

    <title>...</title>
    <link rel="stylesheet" href="webpage.css" type="text/css" />
  </head>
  <body>
So wird der Content in die index-php geladen:

Code: Alles auswählen

<?php
$page = $_GET["page"]; 
if (empty($page)){ 
$page = "startseite"; }
$open = $page.".php"; 
if (file_exists($open)) include($open);
else include("fehler.php"); 
?>
So sieht die startseite.php aus:
(nichts weiter drin, gliedert sich ja in die Index ein.)

Code: Alles auswählen

Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. Es war einmal und ist nichtmehr ein kugelrunder Teddybär. 
Hat jemand eine Idee?

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:21
von Latzhosenträger
Dadurch steht da überall "Es war einmal und ist nichtmehr ein kugelrunder Teddyb?" Das "är." fehlt also in jedem Satz.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:25
von Latzhosenträger
=snigg= hat geschrieben:kack die wand an muss natuerlich encode sein ^^
Klappt - Danke!

Ich bin mir sicher, pft kriegt das eleganter hin, aber immerhin läufts jetzt.

Dadurch ist aber nur der Content "clean". Ganz normale Umlaute in der index.php, außerhalb des Content-bereichs, buggen immer noch. Aber einerseits brauch ich da keine (auch wenns seltsam ist) und andererseits kann man die ja auch einfach mit einem Alternativcode (&uuml etc.) einbinden..

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:34
von Flummi
wo is der unterschied zu variante davor?bewirken beide dasselbe ^^
meta = Clientseitig
header = Serverseitig
Php ist es scheißegal, was der Client macht... Er gehorcht nur stupide dem Webserver. ;)
Ich bin mir sicher, pft kriegt das eleganter hin, aber immerhin läufts jetzt.
Nein.. Ich würde ein cms nie so scripten - viel zu unsicher :)

Aus

Code: Alles auswählen

echo utf8_decode("Es war einmal und ist nichtmehr ein kugelrunder Teddybär.");
würde ich aber

Code: Alles auswählen

$text = "Es war einmal und ist nichtmehr ein kugelrunder Teddybär.";
$text = utf8_encode($text);
echo $text;
machen... Ist einfach übersichtlicher ;)

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:35
von Benu
Erstmal kommt es darauf an in welchem Charset die Datei gespeichert ist. Das sollte in deinem Fall latin1_swedish bzw iso-8859-1 sein. Auf dieses Charset sollte auch dann der HTML Header gestellt sein. Alternativ kann das auch in den Servereinstellungen gemacht werden.

Wenn du in Zukunft aber eh Sonderzeichen verwenden willst, dann nimm von Anfang an UTF-8. Aber dann musst du konsequent jedes Sonderzeichen (auch Umlaute) in UTF schreiben.

PS: Bei http-equiv wird beim Server angesetzt von daher eher serverseitig als clientseitig zuzuordnen.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 19:52
von Latzhosenträger
Okay, erm, ging ganz gut ohne Code. Notepad++ verwendet standardmäßig ANSI und nicht UTF.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 20:08
von Latzhosenträger
Okay, anderes Thema.
Markup Validation Service hat geschrieben: Line 21, Column 10: ID "ABSTAND" already defined
<div id="abstand"> </div>

An "id" is a unique identifier. Each time this attribute is used in a document it must have a different value. If you are using this attribute as a hook for style sheets it may be more appropriate to use classes (which group elements) than id (which are used to identify exactly one element).
Ich habe mehrfach "<div id="abstand"> </div>" in meiner Indexdatei. Ganz einfach, weil ich genau den Abstand öfter mal brauche und auch nie einen speziellen ansprechen möchte. Macht es da überhaupt Sinn, für jeden einzelnen eine CSS Klasse zu definieren? Letztlich ist das doch viel mehr Sourcecode.

Re: HTML-Kopf: Umlaute

Verfasst: 1. Mär 2011, 20:13
von Benu
Joa jedenfalls sollte dir klar sein, dass UTF nicht die Lösung für dein Problem ist. Du wolltest die Zeichen ja nicht als Entitäten eingeben (&uuml; etc) sondern direkt. Und dafür musst du iso-8859-1 nehmen. Wenn das irgendwo als Charset auch angeben wurde müsste alles funktionieren. Sonst liegt es höchstwahrscheinlich an der Datei selber oder etwas stimmt nicht mit der Methode, mit der du die Daten holst.

Zu dem CSS Ding: Der Validator hat doch recht? ID ist unique. Du meinst wahrscheinlich das class Attribut. Ansonsten würde ich dir empfehlen, die CSS Klassen nach ihrer Semantik (Bedeutung) zu bennen. Wenn diese Divs keinen Abstand mehr haben sollten, musst du nicht nur das Layout sondern auch das Markup ändern und das ist einfach nur quark. Von daher aussagekräftige Klassennamen, helfen viel bei späteren Überarbeitungen ;)

PS:
Ich bin glaub etwas von deiner eigentlichen Frage abgewichen (weswegen du dir mein Hinweis trotzdem zu Herzen nehmen kannst ;) ): Du kannst einem Tag mehrere Klassennamen geben. Diese müssen per Leerzeichen getrennt werden. Quasi <span class="error fatal">Foo</span>. Darauf würden dann alle CSS Regeln von .fatal und .error gelten.

Re: HTML-Kopf: Umlaute

Verfasst: 3. Mär 2011, 11:38
von CountZero
Benu hat geschrieben:Joa jedenfalls sollte dir klar sein, dass UTF nicht die Lösung für dein Problem ist. Du wolltest die Zeichen ja nicht als Entitäten eingeben (&uuml; etc) sondern direkt. Und dafür musst du iso-8859-1 nehmen. Wenn das irgendwo als Charset auch angeben wurde müsste alles funktionieren. Sonst liegt es höchstwahrscheinlich an der Datei selber oder etwas stimmt nicht mit der Methode, mit der du die Daten holst.
UTF-8 kann genauso mit Umlauten umgehen und ist idR die bessere Wahl (Da weiter verbreitet und größerer Zeichenumfang). Das Problem ist, wie du selber schon schriebst, das die Datei an sich auch entsprechend codiert sein muss. Ist dies der Fall muss auch nicht mehr hin- und her en/decoded werden.
Mit entsprechenden Editor oder Entwicklungsumgebung lässt sich das auch ganz leicht anpassen, wie Latzhosenträger schon selbst bemerkt hat.

Die CSS Sache ist ja bereits ganz gut erklärt, für reine CSS-Formatierung sind Klassen meist die bessere Wahl und sie lassen sich in den meisten Fällen genauso anwenden (schachteln etc.) wie IDs. - Du brauchst nicht für jeden Abstand eine eigene Klasse sondern kannst genau wie mit id eine einzige Definition verwenden. Wenn du dich einmal ein wenig mit DOM Manipulationen und JS auseinandersetzt wirst du auch schnell merken warum die Mehrfachvergabe von id nicht gut sein kann.