SQL-Kollation UTF-8 oder was?

themonk

Erfahrenes Mitglied
Hallo,
habe zur Zeit das Problem das Ajax die Daten aus meiner Datenbank nicht vernünftig anzeigt.
Nun habe ich raus gefunden das Ajax nur mit UTF-8 läuft da aber meine Datenbanken auf latin1_general_ci gestellt sind können Umlaute nicht angezeigt werden nun ist meine frage, ob man die komplette Datenbank auf UTF-8 stellen kann und den Inhalt auch neu Kodieren kann.Gibt es dafür ein Script oder so?
 
Naja habe ich so auf Seiten im Internet gelesen.
Und sobald ich in der Ajax Datei an der entsprechenden stelle UTF-8 eingebe werden die Umlaute auch richtig angezeigt nur jetzt werden die aus der Datenbank nicht mehr richtig angezeigt.
 
Hi,

Naja habe ich so auf Seiten im Internet gelesen.

Tu so, als hättest Du das nie gesehen... ;)

Und sobald ich in der Ajax Datei an der entsprechenden stelle UTF-8 eingebe werden die Umlaute auch richtig angezeigt nur jetzt werden die aus der Datenbank nicht mehr richtig angezeigt.

Was meinst Du mit "die Ajax Datei" und was heißt, Du hast da UTF8 eingegeben?
Vielleicht zeigst Du einfach mal den Code.

LG
 
Also in meiner Datenbank die auf latin1 gestellt ist steht ein Text mit äöü.
Nun habe ich eine Datei(Hier werden die Umlaute richtig angezeigt) in dieser Rufe ich dann eine neue Datei mit Ajax auf

Code:
....

     xml_http.open(methode, adresse, true);  
       xml_http.onreadystatechange = function() {
         if (xml_http.readyState == 4 && xml_http.status == 200) {
           handler(xml_http.responseText);
         }
       }
test(jj,xml_http);   
   }

      function test(ausgabe,xml_http) {
       var post;
if (ausgabe=='jo'){ 
xml_http.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded;");
post="text="+document.test.text.value+"&text2="+document.test.text2.value;
}else{
	post='null';
}
	

       xml_http.send(post);     
   }
   
   
   
   function handler(ausgabe) {
     document.getElementById("ausgabe").innerHTML = ausgabe;  
   }
Die Datei die ich Aufrufe hat dann deisen Code
PHP:
	<input type='text' value='".$daten->text."' name='text'>";?>
<input type='text' value='' name='text2'>
<input type='button' onclick=\"ArrAjax.aufruf('test.php', handler,
'GET','jo');\" value='Weiter' name='andern'>uöä
Hier werden die Umlaute aus der Datenbank "$daten->text" und uöä als ? dargestellt
 
Hi,

Die Datei die ich Aufrufe hat dann deisen Code
PHP:
	<input type='text' value='".$daten->text."' name='text'>";?>
<input type='text' value='' name='text2'>
<input type='button' onclick=\"ArrAjax.aufruf('test.php', handler,
'GET','jo');\" value='Weiter' name='andern'>uöä
Hier werden die Umlaute aus der Datenbank "$daten->text" und uöä als ? dargestellt

dann liefert dieses Script nicht in ISO-Latin aus. Sende den entsprechenden Content-Type Header:

PHP:
header('Content-Type: text/html; charset=iso-8859-1');

LG
 
Hey themonk,

du solltest Dir einmal genau vor Augen halten,
welche Kodierungen du bei welcher Übertragung/Speicherung verwendest.

Also,
*) welche Kodierung hat deine Hauptseite( sprich auch die Formulare) auf deiner Seite.
*) welche Kodierung hat die Datenbank.
*) welche Koderung verwendet die Ajax-Schnittstelle(sprich, mit welcher kodierung schickst du die Antworten vom Server).

Eine Lösung könnte sein, dass du die Ajax-Schnittstelle auf dem Server die Strings umkonvertieren lässt.
Stichwort iconv.
Da ich mal annehme, dass du reines HTML darüber schickst, wäre das also kein Problem.
Bei JSON siehst das bissel anders aus.

Vielleicht hilft das.

//Edit
Aber pass auf:
Wenn Dein Server als Kodierung ISO-* an die Ajax-Schnittstelle schickt und deine Website Utf8(oder was anderes) hat
(via meta oder content-type) und du dann das zurückbekommene auf der Website anzeigt gibts bei Umlauten und Sonderzeichen Müll.

Grüße,
MArc
 
Zuletzt bearbeitet:
*) welche Kodierung hat deine Hauptseite( sprich auch die Formulare) auf deiner Seite:ISO-8859-1
*) welche Kodierung hat die Datenbank:latin1_swedish_ci
*) welche Koderung verwendet die Ajax-Schnittstelle(sprich, mit welcher kodierung schickst du die Antworten vom Server).:Ich denke das ist auch ISO-8859-1 habe zumindest in dem Ajax Script an der Stelle
Code:
xml_http.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded; charset=ISO-8859-1");
eingefügt.

Wenn ich jetzt
Code:
iconv("UTF-8", "ISO-8859-1", $_POST['text'])
mach werden die Umlaute richtig Angezeigt.
Also so würde es funktioniern aber ist das der richtig weg?
 
Der richtige Weg ist relativ.
Wenn du deine Hauptseite nicht als UTF-8 ausgeben magst (warum auch immer - empfehlen tu ich es auf jeden fall), dann gibt es kein anderen Weg, außer konvertieren.

Was spricht denn gegen eine Ausgabe der Hauptseite als UTF-8 ?
Sprich, _alles_ ls UTF8 auszugeben/speichern - dann fallen all diese Problem weg.
Die Datenbank haste ja schon in UTF-8.

Grüße,
MArc
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück