Probleme mit Umlauten bei dynamisch generierter Seite
Manuel
- html
0 Manuel0 MudGuard
0 Mastershrimp0 Manuel
0 MudGuard0 Axel Richter0 Manuel
Hallo,
ich hab folgendes Problem.
Ich lese per Software (in C) ein HTML-Template aus und ersetze verschiede Teile durch werte aus einer Datenbank.
Jetzt hab ich folgenden Effekt:
Anzeige im Browser:
Fähnrich
Anzeige im Quelltext:
Fähnrich
ich habs im Template einmal mit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
und einmal nur mit
<html>
Probiert, und immer das gleiche :-(
Ich tippe mal, das es ein banaler Fehler ist und ich nur zu dämlich, um das in der Doku zu finden. Deshalb wäre um nen Schubs in die richtige Richtung dankbar :-)
thx4hlp
MfG
Manuel
Hab noch was vergessen:
Die XML Datei, in der die Daten stehen, sieht folgendermassen aus:
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<status_names>
<status value="0">gesperrt</status>
<status value="1">Gast</status>
<status value="2">Einwohner</status>
<status value="5">Ehrenmitglied</status>
<status value="6">Fähnrich</status>
<status value="7">Commander</status>
<status value="8">Captain</status>
<status value="9">Admiral</status>
<status value="10">x</status>
</status_names>
</config>
Wenn ich das ganze mit Entities mache, erzeugt mir libxml2 nen Internal Server error. Aber eigentlich müsste doch die angabe des Zeichensatzes hierbei reichen, nachdem die Ausgabe des Quelltextes OK ist.
Ich bin echt mit meiner Weissheit am Ende :-(
Hi,
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<status_names>
<status value="0">gesperrt</status>
<status value="10">x</status>
</status_names>
</config>
Wenn ich das ganze mit Entities mache, erzeugt mir libxml2 nen Internal Server error.
Vermutlich, weil Du die Entities nirgends definiert hast - in XML sind ä usw. NICHT definiert.
cu,
Andreas
Anzeige im Browser:
FähnrichAnzeige im Quelltext:
Fähnrich
Ich schätze einfach mal blind drauf los: Dein Browser hat eine andere Zeichenkodierung aktiviert, die keine dt. Umlaute kennt. Entweder du stellst den Browser manuell auf den Zeichensatz "Westlich ISO-8859-1" um, oder du gibst den zu verwendenden Zeichensatz im Code mit an:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
Das dürfte klappen.
Chapeau! ;)
Mastershrimp
Hallo,
Ich schätze einfach mal blind drauf los: Dein Browser hat eine >andere Zeichenkodierung aktiviert, die keine dt. Umlaute kennt.
Nein, die Einstellung ist soweit OK (Westeuropäisch (Windows)), und mit (ISO) klappts auch nicht. Wenn ich die erzeugte Seite als statische HTML-Seite auf den server lege, wird die ja auch richtig angezeigt.
Entweder du stellst den Browser manuell auf den >Zeichensatz "Westlich ISO-8859-1" um, oder du gibst den zu >verwendenden Zeichensatz im Code mit an:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
Hat leider nix geholfen. Immer noch der gleiche Fehler :-(
Hi,
Anzeige im Browser:
Fähnrich
Also (höchstwahrscheinlich) UTF-8-kodierte Umlaute, die aber aufgrund einer anderen Kodierungsangabe (iso-8859-1?) im HTTP-header/XML-Prolog/meta-Element nicht korrekt angezeigt werden.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
und einmal nur mit
<html>
Stattdessen hättest Du mal die Kodierungsangaben in obengenannten Stellen anpassen sollen...
cu,
Andreas
Hallo,
Stattdessen hättest Du mal die Kodierungsangaben in obengenannten Stellen anpassen sollen...
ich hab jetzt ein
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
und es Funktioniert. Aber ist das auch "sauber" in HTML/XML?
Ober gibt es "schönere Möglichkleiten oder welche, die "HTML-Konformer" sind?
Mir gehts nicht nur um Funktionalität, sondern auch um einhaltung des Standards und sauberes Programmieren
Hi,
ich hab jetzt ein
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
und es Funktioniert. Aber ist das auch "sauber" in HTML/XML?
Noch sinnvoller wäre es, wenn Du die Kodierung auch im HTTP-Header mitlieferst.
cu,
Andreas
Hallo,
ich hab folgendes Problem.
Ich lese per Software (in C) ein HTML-Template aus und ersetze verschiede Teile durch werte aus einer Datenbank.
Jetzt hab ich folgenden Effekt:Anzeige im Browser:
FähnrichAnzeige im Quelltext:
Fähnrich
Womit siehst Du Dir den Quelltext an?
Ich schätze, Dein C++ Programm macht aus den Zeichen Unicode.
Vergleiche:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Unicode vs. ANSII</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Fähnrich</p>
</body>
</html>
viele Grüße
Axel
Hallo
Womit siehst Du Dir den Quelltext an?
Mit der Option "Quelltext anzeigen" im IE.
Ich schätze, Dein C++ Programm macht aus den Zeichen Unicode.
Das ist meine Vermutung, aber wie bringe ich das weg? Ich hab das Problem, das ist mein erstes Projekt in C++ und XML. Somit bin ich da noch nicht so gut dabei.
Hallo,
Ich schätze, Dein C++ Programm macht aus den Zeichen Unicode.
Das ist meine Vermutung, aber wie bringe ich das weg? Ich hab das Problem, das ist mein erstes Projekt in C++ und XML. Somit bin ich da noch nicht so gut dabei.
Ohne Kenntnisse über das C++ Programm kann man da schlecht helfen.
Möglichkeiten:
1. Definiere und nutze die Entities ä ... im XML, siehe MudGuard.
2. Sorge dafür, dass Dein C++ den String "ä" in den Quelltext schreibt, wenn es ein "ä" findet.
3. Bekomme heraus, wie Du Deinem C++ sagen kannst, dass es ANSII-Code ausgeben soll.
viele Grüße
Axel