You are not logged in.

  • Login

1

Thursday, June 8th 2006, 12:32am

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:

HTML Code

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

2

Thursday, June 8th 2006, 12:20pm

Das liegt an der UTF8 Kodierung.
das ist ein bekanntes Problem

Probleme durch die UTF-8-Zeichenkodierung

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

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.

XML Code

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

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

HTML Code

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


Da du den Inhalt ja sowieso mit php verarbeitest, würde ich dir einfach die FUnktion htmlentities verwendest um die Umlaute zu kovertieren

3

Friday, June 16th 2006, 12:12pm

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

4

Friday, June 16th 2006, 12:36pm

utf8_decode ist die Lösung.

Vielen Dank, die Inspiration des Forums half :-)

UPDATE
Inzwischen findet man im Wiki auch einen Artikel dazu. Unicode und PHP <= 5
Man sollte wirklich versuchen die UTF8-Kodierung überall konsequent zu nutzen.

Social bookmarks