AJAX: Fragezeichen statt Umlaute

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AJAX: Fragezeichen statt Umlaute

    Ich rufe (request) mit Ajax in einen <div> Bereich eine PHP-Seite auf.
    Diese wird dann immer dynamisch aufgebaut.

    Jetzt habe ich aber bemerkt, wenn ich Umlaute in diesem php verwende, werden diese alle mit einem "?" dargestellt.

    Im html-File, wo ich die php Seite laufend aufrufe verwende ich folgenden Header:

    Quellcode

    1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    2. wetten,wetten,fussball" />
    3. <meta name="language" content="de" />
    4. <meta name="robots" content="follow, all" />
    5. <meta http-equiv="Expires: now">
    6. <meta http-equiv="Pragma" content="no-cache">
    7. <meta http-equiv="Cache-Control" content="no-cache">


    Hoffe da kann mir jemand weiterhelfen, wie ich da auch im aufgerufenen php File Umlaute erhalte.

    Vielen DAnk für jede Antwort
  • Das liegt an der UTF8 Kodierung.
    das ist ein bekanntes Problem

    Probleme durch die UTF-8-Zeichenkodierung

    "http://de.wikipedia.org/wiki/AJaX#Probleme_durch_die_UTF-8-Zeichenkodierung" schrieb:

    Viele Ajax-Toolkits versenden XML-Daten, indem sie die in diesem Bereich gängige UTF-8-Zeichenkodierung [11] benutzen. Manche Toolkits erfordern es auch, dass XML-Daten, die vom Webserver zum Webbrowser des Nutzers geschickt werden, in UTF-8 kodiert sein müssen. Wenn die Webseite selbst aber eine andere Zeichenkodierung benutzt, kann dies zu Konflikten mit den UTF-8-basierten XML-Daten führen. Eine mögliche Ursache ist, dass in einem XML-Dokument keine Entity-Referenzen (character entity reference) wie z.B. &ouml; für das Zeichen „ö“ verwendet werden können – es sei denn, sie sind in einer eingebetteten Dokumenttypdefinition definiert oder das XML-Dokument ist nach ISO-8859-1 Zeichenkodierung erstellt worden. HTML hingegen gibt zahlreiche solcher Entities vor. In XML-Dokumenten ohne Dokumenttypdefinition können hingegen nur numerische Zeichenreferenzen (numeric character reference) verwendet werden.

    Quellcode

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <anfang>
    3. <copyright>© 2006 Hans Wurst</copyright>
    4. </anfang>

    Unicode-basierte XML-Dokumente verwenden numerische Zeichenreferenzen, HTML-Dokumente jedoch nicht zwangsweise.

    Quellcode

    1. <html>
    2. <head>
    3. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    4. </head>
    5. <body>
    6. <p>&copy; 2006 Hans Wurst</p>
    7. </body>
    8. </html>


    Da du den Inhalt ja sowieso mit php verarbeitest, würde ich dir einfach die FUnktion [phpdoc]htmlentities[/phpdoc] verwendest um die Umlaute zu kovertieren
  • Vielen Dank schon Mal für die vorhandenen Infos.
    Ich kämpfe auch mit den Umlauten.

    Ich nutze das YAHOO-UI-Framework, baue eine Dialogbox und schicke die weg.
    Das sieht dann in etwa so aus:
    http://developer.yahoo.com/yui/examples/container/dialog.html

    Wenn ich mir die Sache auf meinen lokalen Server ziehe und im Ziel-PHP den Input der Forms protokolliere kommt bei Umlauten nur "Mist" raus.

    Im PHP-Skript kommt dann der Form-String UTF-8 codiert an, d.h. da steht für "ä" nun "C3 A4" in Logfile. Wenn ich das dann mit htmlentities bearbeite kommt "&Atilde;&curren;" raus.

    Was kann man da tun?

    1. Das Form dazu bringen ISO zu schicken. Nur wie?
    2. Mit PHP alles konvertieren. Gibts da eine Funktion?

    Hat jemand eine Idee?

    Servus
    Berni