Fehlerhafte darstellung von Umlauten
filou
- html
0 suit0 Gunnar Bittersmann
0 suit0 filou0 suit
0 Gunnar Bittersmann
0 filou
Hallo!
Ich habe ein Problem mit der Darstellung von Umlauten auf meiner Seite.
Habe Doctype transitional und charset utf-8 eingestellt.
Schreibt man Umlaute auf die lokal gespeicherte Seite werden sie korrekt angezeigt.
Verwendet man jedoch am Server Umlaute wird ein Fragezeichensymbol dargestellt. Ladet man die Seite vom eigenen Rechner auf den Server mutieren die Umlaute zu Krüptischen Zeichen z.B.: für ü
Welche Einstellungen muss man vornehmen damit man ganz normal ä ü ß verwenden kann am Server? Ist das ein Serverproblem?
Für jede Antwort bin ich dankbar, da es sehr lästig ist ewig ä zu schreiben wenn man ein bisschen was verändern will.
Hallo!
Ich habe ein Problem mit der Darstellung von Umlauten auf meiner Seite.Habe Doctype transitional und charset utf-8 eingestellt.
doctype ist für die zeichencodierung irrelevant
du hast die <meta />-angabe verwendet - eingestellt hast du also nix
Schreibt man Umlaute auf die lokal gespeicherte Seite werden sie korrekt angezeigt.
wenn du sie lokal öffnest und der server keine http-header-daten schickt, liest der browser http-equiv aus
Verwendet man jedoch am Server Umlaute wird ein Fragezeichensymbol dargestellt. Ladet man die Seite vom eigenen Rechner auf den Server mutieren die Umlaute zu Krüptischen Zeichen z.B.: für ü
das sind keine kryptischen zeichen, das ist einfach nur ein utf-8 zeichen als ansi codiert, das gehört so
Welche Einstellungen muss man vornehmen damit man ganz normal ä ü ß verwenden kann am Server? Ist das ein Serverproblem?
nein, ein anwenderproblem - du hast dem server nicht gesagt, er soll die seiten als utf-8 ausliefern - er liefert sie als ansi (zb iso 8859-1) aus
Für jede Antwort bin ich dankbar, da es sehr lästig ist ewig ä zu schreiben wenn man ein bisschen was verändern will.
du sollst auch keine entities verwenden, sondern eine korrekte zeichencodierung ;)
vorgehensweise
dokumente als utf-8 ohne byte order mark speichern (wenn das dein editor nicht kann, nimm einen anderen oder zur not direkt utf-8)
server im http-header folgendes mitschicken lassen
content-type: text/html; charset=utf-8
im html dokument folgendes reinpacken (wenn man die seiten lokal anschauen möchte)
<meta http-equiv="content-type" content="text/html; charset=utf-8" >
@@suit:
[…] mutieren die Umlaute zu Krüptischen Zeichen z.B.: für ü
das sind keine kryptischen zeichen,
Für einen Besucher einer Webseite ist das schon kryptisch.
das ist einfach nur ein utf-8 zeichen als ansi codiert
Deine Formulierung ist falsch. Es gibt keine UTF-8-Zeichen (nicht einmal ohne Deppenleerzeichen) und „de-“ fehlte.
Das ist einfach ein mit UTF-8 codiertes Zeichen, was zwei Oktetts (Bytes) ergibt, die wiederm mit ISO 8859-1 decodiert wurden, was die Zeichen 'Ã' und '¼' ergibt.
(wenn das dein editor nicht kann, nimm einen anderen oder zur not direkt utf-8)
?? „direkt utf-8“?
server im http-header folgendes mitschicken lassen
content-type: text/html; charset=utf-8
Siehe FAQ: Einstellung der Zeichencodierungsangabe in .htaccess
Live long and prosper,
Gunnar
Für einen Besucher einer Webseite ist das schon kryptisch.
der besucher sollte das auch nicht zu gesicht bekommen, wenn doch dann kann sein browser nix mit utf-8 anfangen - dann ist es in der tat kryptisch
das ist einfach nur ein utf-8 zeichen als ansi codiert
Deine Formulierung ist falsch. Es gibt keine UTF-8-Zeichen (nicht einmal ohne Deppenleerzeichen) und „de-“ fehlte.
jaja, deppenleerzeichen ;) ich weiss - verdammtes eindeutschen
ja - meine formulierung ist in der tat nicht ganz richtig, natürlich gibts keine utf-8-zeichen - es gibt unicode-zeichen die unter zuhilfenahme von 2 bis 4 ansi-zeichen dargestellt werden - utf-8 ist kein zeichensatz sondern "nur" eine transformationsmethode
leider sind character encoding und character set teilweise begriffsynonym und auch falsch in vielen standards drinnen - charset=utf-8 ist also im grunde genommen falsch - aber es wird einfach beibehalten, weils einfach so ist (aus "historischen" gründen) von der seite darf man wohl von einem utf-8-zeichen sprechen, wenns auch einen utf-8-zeichensatz gibt ;)
ist genauso wie die referrer/referer-geschichte ;)
(wenn das dein editor nicht kann, nimm einen anderen oder zur not direkt utf-8)
?? „direkt utf-8“?
ich meinte damit "die einstellung, bei der utf-8 direkt dran/drauf steht, auswählen" diese variante ist allerdings meistens mit byte-order-mark und kann unter umständen probleme verursachen - ja nach konfiguration in älteren php-versionen
<!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" lang="de" xml:lang="de">
<head>
<link rel="stylesheet" type="text/css" href="style/we_style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta [...]
In meinen Augen hab ich im head eindeutig angegeben, dass eine utf-8 Zeichenkodierung angewendet werden soll.
Weiters hab ich in .htaccess folgendes geschrieben:
"RewriteEngine off
DirectoryIndex index.html
AddCharset UTF-8 .html
Content-Type: text/html; charset=UTF-8 "
hab dann die .htaccess nochmals ins root verzeichnis kopiert, da ich vermutete, dass sich das vielleicht nur auf Unterordner auswirke...
Das alles hat nix gebracht. Ein ä wird noch immer als ? angezeigt. Ein ü allerdings noch immer als ü.
Das gibts doch nicht!
<!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" lang="de" xml:lang="de">
<head>
<link rel="stylesheet" type="text/css" href="style/we_style.css" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta [...]In meinen Augen hab ich im head eindeutig angegeben, dass eine utf-8 Zeichenkodierung angewendet werden soll.
ja, die http-equiv-angabe greift aber nur, wenn kein http-header vorhanden ist
Weiters hab ich in .htaccess folgendes geschrieben:
"RewriteEngine off
DirectoryIndex index.html
AddCharset UTF-8 .html
Content-Type: text/html; charset=UTF-8 "
hab dann die .htaccess nochmals ins root verzeichnis kopiert, da ich vermutete, dass sich das vielleicht nur auf Unterordner auswirke...
ggf ist es überhaupt nicht möglich, die zeichencodierung per .htaccess festzulegen, die serverconfiguration könnte dagegen sein und die .htaccess-datei ist wirkungslos
Das gibts doch nicht!
vielleicht wäre es mal schlau nachzusehen, was im browser als zeichencodierung ankommt ;)
und wie gesagt: das alles hilft nix, wenn das dokument selbst (und alle includes usw) nicht entsprechend codiert ist (sind)
@@suit:
ja - meine formulierung ist in der tat nicht ganz richtig, natürlich gibts keine utf-8-zeichen - es gibt unicode-zeichen die unter zuhilfenahme von 2 bis 4 ansi-zeichen dargestellt werden
Schon wieder: nein.
Die Unicode-Zeichen werden UTF-8-codiert in 1(!) bis 4 Oktetts (Bytes) dargestellt. Diese stehen bei UTF-8 nicht für einzelne ASCII-Zeichen.
Du bewegtest dich auf der falschen Ebene. Bytes sind das eine, Zeichen was anderes. [http://www.w3.org/International/questions/qa-what-is-encoding@title=FAQ: Zeichencodierung für Anfänger]
diese variante ist allerdings meistens mit byte-order-mark
Im Windows-Notepad immer; in vernünftigen Editoren lässt sich das einstellen. [FAQ: Einstellung der Zeichencodierung in Web-Editoren und Texteditoren
Live long and prosper,
Gunnar
Die Unicode-Zeichen werden UTF-8-codiert in 1(!) bis 4 Oktetts (Bytes) dargestellt.
recht hast du - sie werden in 1 bis 4 bytes codiert, 2 bis 4 betrifft natürlich nur zeichen > 127 (also ausserhalb ascii)
Diese stehen bei UTF-8 nicht für einzelne ASCII-Zeichen.
klar stehen die bitfolgen nicht für einzelne ascii-zeichen, sie sind aber exakt gleich hinterlegt - alle zeichen von 0 bis 127 sind in utf-8 und ascii exakt gleich
Du bewegtest dich auf der falschen Ebene. Bytes sind das eine, Zeichen was anderes.
ist mir klar - aber da utf-8 nur eine transformation darwstellt, ist es bei einzelnen ascii-zeichen unerheblich, wie man die bitfolge mit der fertigen zeichentabelle vergleicht, die logik dahinter ist in beiden fällen aus gutem grund gleich (z.B. finden das alte ftp-clients die text nicht binär sondern als ascii übertragen sehr toll, da geht kein zeichen kaputt)
Im Windows-Notepad immer; in vernünftigen Editoren lässt sich das einstellen.
gibt auch genug kostenpflichtige, die das nicht können - den lustigen link zu adobes meinung dazu hab ich denke ich schon mal irgendwo gepostet
@@Gunnar Bittersmann:
Du bewegtest dich auf der falschen Ebene. Bytes sind das eine, Zeichen was anderes. [http://www.w3.org/International/questions/qa-what-is-encoding@title=FAQ: Zeichencodierung für Anfänger]
Oops, flascher Link. Jetzt aber: [FAQ: Zeichencodierung für Anfänger]
Und in Kürze auch auf Deutsch.
Live long and prosper,
Gunnar
Habe Doctype transitional und charset utf-8 eingestellt.
doctype ist für die zeichencodierung irrelevant
du hast die <meta />-angabe verwendet - eingestellt hast du also nix
Wenn man doctype xhtml strict verwendet und zusätzliche Zeichen verwendet werden diese nicht angezeigt. Deshalb hab ichs dazugeschrieben. So ganz irrelevant ist es nicht.