Denkfehler? Überall UTF8 und doch Probleme n phpmyadmin mit Umlauten?

falkgottschalk

Aktives Mitglied
Thread Starter
Dabei seit
22.08.2005
Beiträge
24.076
Reaktionspunkte
1.619
Servus,

irgendwie stehe ich gerade auf dem Schlauch....

Gegeben:php & mysql.

Datenbank mit allen Kollationen steht auf utf8_general_CI.

php-Seiten haben das im Header:

PHP:
<?php 
   header('Content-Type: text/html; charset=utf-8'); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="Content-Type: text/plain; charset="UTF-8" />
</head>

Browser (Safari) steht auf "UTF8".

In der Bearbeitung der Daten über eigene php-"Programme" sind die Umlaute ok, sowohl bei der Ausgabe am Bildschirm als auch in den FORMS.
Schaue ich mir die Daten mit phpmyadmin an, dann sind die Umlaute "kaputt".

Egal was ich im Browser einstelle - es ist weder utf8 noch iso latin1 noch standard.

Ich checke es einfach nicht - wo liegt bitte mein Denkfehler???

Danke!
 
Danke, funzt.
Verstehen muss ich das aber nicht, oder? Wenn schon alles auf UTF8 steht - was mischt sich die Connection da noch ein????
 
was mischt sich die Connection da noch ein?

Es könnte sein, das der Mysql-Client als defaultwert latin1 oä. hat, weswegen die Werte/Umlaute entsprechend verstümmelt werden könnten.
Du hast also z.B in Deiner PHP-Anwendung (hier phpmyadmin) alles auf utf-8 gestellt und die Datenbank selber ist auch utf-8, aber der Client, der zwischen der PHP-Anwendung und der Datenbank vermittelt spricht latin1.

Das ist ein wenig so, wie das schöne Spiel "Stille Post" wobei in der mitte jemand sitzt, der nur gebrochen Englisch spricht und links und rechts Muttersprachler.
Da wird auch einiges verloren gehen. ;)
 
Hey, der Client war MEIN iMac mit MEINEM Safari und der stand auch auf UTF8.
OK, in der EDV streicht man irgendwann das Wort "Warum" aus seinem Wortschatz und lebt damit, dass es eine Lösung gibt.
 
Nein, PHP spricht ja über den "Client" mysqld (pdo_mysql, mysqlnd oder welcher auch immer) mit Mysql. Das ist ja das Bindeglied. Und wenn dieser Client standardmäßig Latin 1 (iso-8859-1/15) verwendet (was er eben tut), sind die Umlaute und Sonderzeichen im Eimer. Kenne das Problem auch. Fällt auch erst auf, wenn man dann mal in phpmyadmin nachschaut und feststellt, das die Umlaute vermurkst sind.
 
Danke für die Erklärung. Irgendwie doof ist das aber doch... nunja, man lernt halt nie aus.
 
dummerweise hat sich ja die Community gegen ein PHP6 mit UTF-8 ausgesprochen. Daher ist das Zeichensatzgebastel in PHP noch allgegenwärtig. Es wird wohl noch eine Weile dauern, aber irgendwann wird es wohl endlich reine UTF-8 Lösungen geben. Solange muß man sehr genau acht geben was man tut wenn man denn UTF-8 verwenden will. Sehr schön zusammengefaßt ( inklsusive des hiesigen Dilemmas) ist das auf dieser Seite:

http://www.gerd-riesselmann.de/softwareentwicklung/php-und-utf-8-eine-anleitung-einleitung
 
Zurück
Oben Unten