Überall ist UFT8 eingestellt - DB liefert trotzdem ISO-8859-1!
OneWorld
- datenbank
2 Dieter Raber0 hotti0 Peter
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>...
Wenn ich in meinem PHP Skript z.B. echo "ö";
schreibe, wird das "ö" auch richtig angezeigt
WENN ICH ABER das DB-result mit $row = $query_result->fetch_array(MYSQLI_ASSOC);
auslese, DANN sind die Sonderzeichen defekt! Und noch besser: Stelle ich im Browser Ansicht > Zeichencodierung auf "ISO-8859-1", dann werden die Sonderzeichen der DB-Abfrage wieder korrekt angezeigt.
Die Daten habe ich über phpMyAdmin in die DB geschrieben.
Wo steckt der Fehler? Was muss ich tun??
Hallo,
mach ganz am Anfang, also direkt nach der Datenbankverbindung eine Query "set names 'utf8'"
, dann sollte sich dein Problem in Wohlgefallen aufloesen.
Gruss
Dieter
Hallo Dieter,
mach ganz am Anfang, also direkt nach der Datenbankverbindung eine Query
"set names 'utf8'"
, dann sollte sich dein Problem in Wohlgefallen aufloesen.
besser ist die Verwendung von mysql_set_charset() bzw. bei Verwendung der leistungsfähigeren und empfohlenen mysqli-Erweiterung mysqli::set_charset().
Beste Grüße
Vinzenz
Danke für eure Hilfe!
Habe Dieters Tipp umgesetzt und nun geht alles super. Damit ist zwar das Problem nicht direkt an der Wurzel gepackt worden, aber doch noch ziemlich nahe der Wurzel behoben ;)
Hi!
Habe Dieters Tipp umgesetzt und nun geht alles super. Damit ist zwar das Problem nicht direkt an der Wurzel gepackt worden, aber doch noch ziemlich nahe der Wurzel behoben ;)
Doch, das ist genau die Wurzel, die du vergessen hast. Du schriebst im Ausgangsposting:
Ich habe in meiner MySQL Datenbank für alles utf8-general-ci eingestellt.
Welche der insgesamt 10 verschiedenartigen Stellen hast du denn berücksichtigt?
In der Regel übersieht man als Einsteiger in diese Problematik, dass einige der Werte nur Defaultwerte sind (Datenbank- versus Tabellen- versus Feldkodierung), und dass bei nicht expliziter Aushandlung der zwischen Client und Server zu verwendenden Kodierung (Verbindungskodierung) ein solcher Defaultwert zur Anwendung kommt, und dass obendrein MySQL zwischen Feldkodierung und Verbindungskodierung Umkodierungen vornimmt, wenn die nicht übereinstimmen.
Lo!
hi,
Was muss ich tun??
Erstmal feststellen, mit welcher Codierung Deine Texte(Zeichen) in der DB vorliegen.
Hotti
- Ich habe in meiner MySQL Datenbank für alles utf8-general-ci eingestellt.
- Meine PHP-Dateien sind auch alle UTF8 codiert (Zend/Eclipse > Edit > Set Encoding: Man sieht UFT8 ist eingestellt)
Mal ein heißer Tip, Apache liefert falsches Format oder wir hätten mal wieder ein klassische UTF8 problem von php
schon mal
echo utf8_encode(wert_aus_Datenbank);
probiert?
lg