SQL Umlautproblem

Hallo Community,
ich weis nicht ob das Thema hier rein gehört!?

Es werden Daten in UTFS8 in eine Datenbank geschrieben.
Die Dtaen stehen hier auch richtig drinne. also ö ist ö und nicht irgendein nicht zu identifizierbarer text...

Jedoch wenn das ganze dann via PHP ausgelesen wird und optisch als text wieder ausgegeben wird steht da für die umlaute mist!!??

Hat jemand da einen Rat? Habe über google gelesen das das ganze wohl ein treiber problem von MS SQL Datenbank sein soll... Kann mir aber nicht vorstellen das es da keine Lösung gibt!!??

Greetz
 
Das kann viele Ursachen haben:
  • Die Daten stehen schon falsch in der Datenbank, nur dein Datenbankbrowser zeigt sie korrekt an, da er die Ausgabe nicht so formatiert, wie sie in der Db stehen (halte ich aber eher für unwahrscheinlich)
  • Die Verbindung zur Datenbank läuft nicht mit UTF8. Das heißt normalerweise, dass die Daten falsch ankommen, obwohl die Datenbank selbst auf UTF8 läuft und der Client (hier: PHP) auch.
    Normalerweise kann man die Kodierung der Verbindung beim Verbindungsaufbau als Parameter angeben (z.B. bei JDBC) oder durch spezielle SQL Queries festlegen ("SET NAMES 'utf8';" o.ä.)
  • PHP liest die Umlaute korrekt aus der DB, liefert die Seite selbst aber in einer anderen Kodierung aus (z.B: ISO-8859-1). In diesem Fall kannst du über den header()-Befehl in PHP die Kodierungskennung der ausgelieferten Seite bestimmen.
  • PHP selbst läuft intern auf einer anderen Kodierung. Das kannst du mit mb_internal_encoding() korrigieren, oder indem du die PHP Skripte im UTF8-Format speicherst.

Das sind natürlich alles Vermutungen. Aus eigener Erfahrung würde ich dir aber raten, zuerst zu versuchen, die SQL-Verbindungskodierung auf UTF8 zu setzen (indem du "SET NAMES 'utf8';" gleich nach Beginn einer SQL-Verbindung als Query absetzt oder den Datenbankserver korrekt konfigurierst), da ich genau dieses Problem auch schon hatte.

mfg, metax.
 
Zurück
Oben