Charset-Probleme mit Umlauten

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Charset-Probleme mit Umlauten

Postby FunkyMonkey » 23. September 2007 09:46

Hallo

ich habe schon viel gegoogelt aber das Problem besteht weiterhin:

Umlaute werden nicht korrekt in der Datenbank gespeichert, wenn sie über ein Formular auf der Website eingegeben werden.

Habe folgendes Setup:
------------------------------------------
laut phpinfo:
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7

_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7

php core: default_charset no value no value


im header der seiten:
Code: Select all
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">


in der my.cnf steht:
Code: Select all
character-set-server = latin1
collation-server = latin1_general_ci


Kollation in der MySQL-Datenbank laut phpmyadmin: latin1_general_ci

Umlaute werden als Fragezeichen "?" in der Datenbank gespeichert. Wenn ich den Input eines Formularfeldes direkt wieder ausgeben lasse, sehe ich die Umlaute korrekt. Der Server selbst scheint diese also richtig "durchzuschleusen". Der Fehler liegt meiner Meinung nach bei der Schnittstelle PHP->MySQL oder Apache->MySQL. In der MySQL-Datenbank selbst kann ich Umlaute im Edit-Mode "hart" rein schreiben und diese werden offensichtlich auch korrekt gespeichert, sowie auf der Website korrekt ausgegeben.

In phpmyadmin steht folgendes im Header:
Code: Select all
<meta http-equiv="Content-Type"
    content="text/html; charset=utf-8" />


das habe ich auch schon im header meiner website probiert und es bringt nichts.

Ist hier noch jemand der auch schon mit dem Problem zu kämpfen hatte? Freue mich über jeden Tipp!
FunkyMonkey
 
Posts: 8
Joined: 26. August 2007 21:07

Postby sari42 » 24. September 2007 21:23

Wie php scripte Sonderzeichen an mysql weiterleiten hängt auch von "set names" ab: http://dev.mysql.com/doc/refman/5.0/en/ ... ction.html
(das ganze Kap. 9 ist lesenswert).

"set names" war bei meinen scripten allerdings noch nie nötig. Wichtig ist, schon beim Anlegen der Datenbanken den gewünschten character-set/collation zu wählen, damit alle Tabellen und Spalten ihn "erben". Meine scripts haben alle
Code: Select all
header("Content-Type: text/html; charset=iso-8859-1");
(damit FF zufrieden ist) und alle Tabellen/Spalten sehen etwa so aus:
Code: Select all
CREATE TABLE IF NOT EXISTS `ttt` (
  `dNAME` varchar(50) collate latin1_german2_ci
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci ;
in my.cnf nur
Code: Select all
default-character-set=latin1
default-collation=latin1_german2_ci
damit ich nicht bei jeder neuen db die gewünschte collation mit angeben muß. Die collations lassen sich mit phpmyadmin nachträglich unter "Operationen" spaltenweise anpassen.
sari42
 
Posts: 800
Joined: 27. November 2005 18:28


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 62 guests