header problem (umlaute)

Amschti

Erfahrenes Mitglied
Ich verwende seit kurzer zeit das sympatisch einfache jquery

nach mehreren einträgen musste ich feststellen das es mir die Inhalte, die ich per Get/Jquery nicht so in meine datenbank eingetragen hat, wie es vorher mit normaler get funktion gemacht hat, die buchstaben sahen in der datenbank dan soo aus Ä= ä , naja war kein problem, hab schnell auf utf-8 eingestellt im header, nun jetzt ist das problem erst recht eskalliert, die anderen einträge die korrekt Ä darstellten zeigen mir nun beim auslesen das hässliche ?, statt den Korrekt eingetragenen Umlaut.

Wie gehe ich nun am besten vor, um beide korrekt darzustellen?
kann ich bei jquery da was einstellen?
soll ich beim empfangen der GET Inhalte was machen (wenn sie per jquery gesendet werden?
da die seite ja per Ajax gestartet wird, muss ich da einfach die den header speziel einstellen? welches ist überhaupt besser UTF-8 oder iso-8859-1 ?, hab bissher immer letzteres verwendet....

Vielen dank
 
ich möchte dabei noch sagen das ich bemerkt habe das es keinen einfluss hat welche codierung ich verwende, jquery sendet die hässlichen umlaute immer gleich, egal welche codierung ich beim senden/empfangen eingestellt habe....
 
Hallo,

hast du schon mal in einem Browser Debugger (z.B. Firebug, Chrome dev console) geschaut, welches Encoding in deiner HTTP Reponse vom Server eingetragen wurde?

Verwendest du einen Java Backend / Servlet-Container?

Welches Encoding ist in deiner Datenbank (Verbindung) eingestellt? Welches Encoding sendet dein Server zum Client?

Gruß Tom
 
Zeichensatz / Kollation der MySQL-Verbindung = utf8_general_ci;
sämtliche PHP Seiten habe ich nun auf :
echo'<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />;
gesetzt. Wie es schon seit jeher einwandfrei funktionierte.

Die älteren einträge und die einträge ohne jqueri funktionieren einwandfrei. alles wird korrekt eingetragen so das ich in die DB reinkann und die richtigen umlaute sehe.

nur die mit jquery eingetragenen daten werden falsch eingetragen ( also ich denke ich muss das jquery dazu bringen die korrekten umlaute umzusetzen, nur wie?)

hier ein besipsiel dieses sogenannten jquery get funktion:

Code:
$.get("startseite/zuklappen.php",
      {"window":(a)},
      function(text){$("#" + (a) + "_aufklappen").html(text);});

wenn ich den Code nun so ansehe denke ich das man text evtl. ersetzten muss? nur mit was? :D
 
verschieb es wohin du willst ;) hautpsache ein O.G kann mir helfen :D ist aber keine frage von PHP sondern jquery, und das is Javascript? (also meine vermutung)
 
hmmmm. scheinst wohl recht zu haben: habe diesen satz gefunden ist aber auf english.. (When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side.) kann mir jemand diesen satz übersetzen?...

wie schaffe ich es dann aber die alten DB einträge korrekt umzuwandeln damit nicht diese hässlichen fragezeichen kommen? oder muss ich die irgendwie mittels php programmierung durchlaufen lassen um alle neu zu setzen?
 
Stell das hier zitierte auf UTF8 und es sollte passen. Das Fragezeichensymbol kommt dann, wenn man UTF8-kodierte zeichen in ISO ausgibt.

meinst du nicht genau umgekehrt? jetzt habe ich UTF8 eingesetzt, und nun werden alle alten datenbank abrufe die umlaute enthalten mit einem fragezeichen dargestellt. (dazumals mit ISO in DB eingetragen)

Wenn ich ISO-8859-1 einsetzte, werden die neuen einträge die ich mitells jquery (anscheinend UTF8) falsch dargestellt (ä).

ich möchte es aber nun bei UTF8 belassen, weiss aber nicht wie ich die alten einträge ändern kann, auf eine einfache art und weise. gibt es da spezielle php funktion? zb.
PHP:
<?php 
$ergebnis = mysql_query("SELECT * FROM doku_kat");
while($keyword = mysql_fetch_object($ergebnis))
{
$kategorie = irgendeineUTF-8umwandelfunction($keyword->kategorie);
$aendern = "UPDATE doku_kat Set kategorie = '$kategorie' WHERE id_kat = '$keyword->id_kat'";
$update = mysql_query($aendern);

}
?>

gibts da was?
oder muss ich alle einträge per get senden mit jquery?
 
Zuletzt bearbeitet:
meinst du nicht genau umgekehrt? jetzt habe ich UTF8 eingesetzt, und nun werden alle alten datenbank abrufe die umlaute enthalten mit einem fragezeichen dargestellt. (dazumals mit ISO in DB eingetragen)

Wenn ich ISO-8859-1 einsetzte, werden die neuen einträge die ich mitells jquery (anscheinend UTF8) falsch dargestellt (ä).

ich möchte es aber nun bei UTF8 belassen, weiss aber nicht wie ich die alten einträge ändern kann, auf eine einfache art und weise. gibt es da spezielle php funktion? zb.
PHP:
<?php 
$ergebnis = mysql_query("SELECT * FROM doku_kat");
while($keyword = mysql_fetch_object($ergebnis))
{
$kategorie = irgendeineUTF-8umwandelfunction($keyword->kategorie);
$aendern = "UPDATE doku_kat Set kategorie = '$kategorie' WHERE id_kat = '$keyword->id_kat'";
$update = mysql_query($aendern);

}
?>

gibts da was?
oder muss ich alle einträge per get senden mit jquery?
Es gibt utf8_encode.

Oder:
PHP:
mysql_query( 'SET NAMES utf8;' );

// deine Updateschleife
$ergebnis = mysql_query("SELECT * FROM doku_kat");
while($keyword = mysql_fetch_object($ergebnis))
{
$aendern = "UPDATE doku_kat Set kategorie = '{$keyword->kategorie}' WHERE id_kat = '$keyword->id_kat'";
$update = mysql_query($aendern);
}

Gruß
 
Zuletzt bearbeitet:
Zurück