HTML Problem Umlaute

Hi !

Also ich ärger mich hier gerade mit den Umlauten in HTML

HTML:
<html>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <body>
 ö ä ü
 </body>
</html>

HTML:
<html>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <body>
 ö ä ü
 </body>
</html>

Bei beiden Versionen werden die Umlaute falsch dargestellt. Was mache ich falsch X(
 
Probiers mal so:
HTML:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<body>
ö ä ü
</body>
</html>

Das sollte mit jedem Charset funktionieren.
 
Hi !

Ja, das geht. Ich will aber normal tippen im Quellcode.An etwas muss es ja liegen, nur an was ?

ps: oben habe ich den <head> Bereich vergessen, der ist natürlich vorhanden
 
Also ich hab mir die Schreibweise mittlerweile angewöhnt.
Ich glaube, dass z.B. Phase5 das automatisch macht. Also beim Schreiben im Editor werden die Umlaute normal angezeigt und in die Datei werden sie jeweils als &xuml; geschrieben.

in der allergrößten Not könnte man ja noch ein Programm basteln, welches man nur kurz doppelt klickt und es automatisch macht. Währe aber eher eine schlechtere Lösung.

Ob man mit dem Charset noch irgendwas drehen kann, weis ich nicht.
 
Vergiss das mit normal tippen und bleibe mit dem Standard konform. Zur Not schreibe den Quelltext erstmal ganz normal und ersetze die Umlaute dann mit der Suchen und Ersetzen Funktion.
 
Ich kann mich meinen Vorrednern eigentlich nur anschließen, aber dennoch:

Schau, dass du die Datei auch in dem Zeichensatz abspeicherst, den du angibst.

Deine Angabe im header ist nicht zwingend das, was am Ende auch verschickt wird. Der Webserver kann die Einstellung auch überschreiben. Prüfe also einmal, in welchem Zeichensatz die Seite letztendlich ausgeliefert wird.
 
Wuaaa... Kampf den Eumels. In Zeiten internationaler Zeichensätze sollte das doch eigentlich mal der Vergangenheit angehören.

Schau mal, was der Browser meint, welchen Zeichensatz deine Datei hat. Der META-Tag ist nur eine der möglichen Stellen, an denen ein Zeichensatz genannt wird. Eventuell steht noch einer in der XML-Einleitung des Dokuments (<?xml version="1.0" charset="..." ?>). Und der Webserver sendet auch noch einen im HTTP-Header mit, der dem deiner Datei widersprechen könnte. Wenn du das alles abgleichst, sollte das auch ohne Eumels klappen.
 
ich würde ebenfalls sagen A) nachschauen, in welchem Charset der Webserver ausliefert und B) in welchem Charset die Datei selbst gespeichert ist...
 
du könntest aber auch zwei nette php tags um das ganze insgesamt machen und die umlaute mit z.b. ereg_replace ( string $pattern , string $replacement , string $string ) ersetzen lassen. ich habs zwar noch nicht ausprobiert müsste aber prinzipiell funktionieren.
Sonst einfach wie oben gesagt das richtige Charset im Head definieren
 
Um die Serverseite mal zusammenzufassen (Apache2):

/etc/apache2/conf.d/charset:
Code:
AddDefaultCharset UTF-8

'file' auf zwei verschiedene Dateien (die erste ist doof, die zweite in Ordnung):
Code:
file datei2.txt
datei2.txt: ASCII text, with CRLF line terminators

Code:
file datei1.txt 
datei1.txt: UTF-8 Unicode text

Sowas kann passieren, wenn man von einem Windows-System aus eine Datei auf einen Linux-Server schiebt. Eine Variante das zu fixen sind die HTML Codes für Umlaute, wie &auml, &ouml, usw.

Nachtrag: das ist nur eine mögliche Variante um das Umlautproblem in den Griff zu bekommen, es gibt noch viele andere ;)
 
du könntest aber auch zwei nette php tags um das ganze insgesamt machen und die umlaute mit z.b. ereg_replace ( string $pattern , string $replacement , string $string ) ersetzen lassen.

Bitte nicht. Zum einen ist das das sprichwörtliche mit Kanonen auf Spatzen schießen. Zum andern wird das extrem unübsersichtlich, weil du mehrere ereg_replace() Aufrufe schachteln müsstest um alle Sonderzeichen zu ersetzen und das eigentliche Problem löst es auch nicht. Zu allem Überfluss sind die ereg Funktionen seit PHP 5.3.0 Deprecated.
 
Zu allem Überfluss sind die ereg Funktionen seit PHP 5.3.0 Deprecated.

da kamst du mir wohl zuvor - das Gleiche hatte ich auch gerade im Kopf, als ich seinen Beitrag gelesen habe.
WENN schon reguläre Ausdrücke, dann doch bitte die Perl-kompatiblen ( z.B. preg_replace() )

Aber wie schon erwähnt: die regulären Ausdrücke sind nicht dafür gedacht, Code kaputt zu patchen....

Wenn die Wunsch-Lösung das automatisierte Ersetzen in Eumels ist, kann man sich alle Dateien, die es betrifft, mal in 'nen gescheiten Editor werfen, welcher eine Suchen-/Ersetzen-Funktion über mehrere Dateien gleichzeitig mitmacht (z.B. Geany) und könnte das dann damit lösen.

Aber wenn man schon Geany, Notepad++ oder ähnliche Editoren verwendet, kann man auch einfach die Textdatei als UTF-8 speichern - das ist sicherlich die sauberere Variante ;)
 
Hm, ich habe gerade zufällig genau daselbe Problem mit einem Apache-Webserver unter Debian-Lenny. :D

Die Daten stammen dabei aus einer MySQL-Datenbank. Das Charset für die Datenbank, Tabellen und alle Felder habe ich auf utf8_unicode_ci gesetzt.
Im HTML-Head und in der Apache-Config ist das UTF8-Charset auch explizit gesetzt. Andere Angaben für irgendwelche Charsets sind in keiner Config zu finden.

Und alle Umlaute werden verstümmelt.

Wenn ich AddDefaultCharset UTF-8 in der Apache-Config auskommentiere und das Charset im HTML-Head auf iso-8859-1 setzte, geht es logischerweise.

Da ich keine Zeit habe mich nun damit rumzuschlagen, werd ich es nun dabei belassen. Interessiert letztendlich eh niemanden.^^
 
Zurück
Oben