• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[php & MySQL] richtige Kodierung

zsoerenm

New member
Hallo

ich hab ein Problem mit der Kodierung. Die Umlaute die aus der Datenbank kommen werden als Kästchen angezeigt.
Ich möchte keine html umlaute benutzen, da das umwandeln zu viel zeit beanspruchen würde.

Die Kollation (ist das die Kodierung?) der Daten in der Datenbank ist als latin1_swedish_ci gespeichert. (Ich hab einfach den Standart von phpmyadmin so gelassen.). In phpmyadmin werden die Umlaute auch als Umlaute ausgegeben.

Mein Index.php ist so aufgebaut:

HTML:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
</head>

Im Quelltext werden die Umlaute richtig ausgegeben, im Internet Explorer aber sind stattdessen Kästchen zu sehen.

Umlaute die nicht aus der Datenbank kommen, sondern aus der index.php datei kommen werden korrekt dargestellt.

Gruß Sören
 
Zuletzt bearbeitet:
ja dann speicher ich die Datenbank in utf8 ab.

Phpmyadmin bietet hier aber mehrere Auswahlmöglichkeiten zu utf8:
utf8_bin
utf8_czech_ci
utf8_danish_ci
...
utf8_unicode_ci

Welche davon sollte ich nehmen?

Danke schon mal
 
ja utf8 ist so eine sache.

ich betreue eine internationale seite, bei der ich es so gelöst habe:

1. in phpmyadmin in der datenbank ansicht bei 'operationen' die kollation auf "uft8_unicode_ci" einstellen. dann wird es automatisch bei allen neuen tabellen übernommen. bei bestehenden tabellen alle textfelder von hand umstellen.

2. gleich nachdem in php die datenbankverbindung hergestellt wurde, folgende queries durchsenden:
PHP:
$db->query('SET NAMES utf8');
$db->query('SET CHARACTER SET utf8');

3. in der serverkonfiguration den standard zeichensatz auf utf-8 setzen. evtl per php den header auch senden:
PHP:
header('Content-Type: text/html; charset=UTF-8');
 
Zurück
Oben