Umlaute in PHP & HTML

Setze zum testen die Kollation der Tabelle und Spalten auf "latin1_german2_ci".
Die Kollation der MySQL-Verbindung belasse auf "utf8_general_ci".

Gruß

PHP-HELPER-2010
 
Also, folgende Daten habe ich & es geht immernoch nicht:
........
Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_c1
..........

Gehe ich recht in der Annahme, dass du diese Info von PHPMyAdmin hast?

Falls ja...das bedeutet erstmal, dass bei PHPMyAdmin die Verbindung unter UTF8 läuft...was noch lange nicht bedeutet, dass dies der Server-Standard ist(und somit in deinen Skripten der Fall ist)

Gehe mal auf der PHPMyAdmin-Startseite auf den Tab "Variablen"....dort findest du die Systemvariablen.
Poste mal was dort bei
character set client
character set connection
character set database
character set results
character set server

...steht.

Ansonsten: es könnte sein, dass du die Daten "reparieren" musst...wenn sie falsch eingetragen wurden, ändert eine nachträgliche Änderung der Einstellungen auch nichts daran.
 
Hier:

Code:
character set client  	utf8
(Globaler Wert) 	latin1
character set connection 	utf8
(Globaler Wert) 	latin1
character set database 	latin1
character set filesystem 	binary
character set results 	utf8
(Globaler Wert) 	latin1
character set server 	latin1
character set system 	utf8
character sets dir 	C:\Xampp\xampp\mysql\share\charsets\
collation connection 	utf8_general_ci
(Globaler Wert) 	latin1_swedish_ci
collation database 	latin1_swedish_ci
collation server 	latin1_swedish_ci
 
Hmm, also mit utf8_encode(); klappts! Nur würde ich gerne wissen ob das ein allgemeines Problem das auch in anderen Seiten auftritt bzw. wo genau mein fehler liegt? :)

Also ich sag jetzt mal (ganz unverbindlich), dass es an den vorherigen Einstellungen lag: Wenn Du Sonderzeichen erst mit latin_xxx speicherst und dann einfach den Zeichensatz der Spalte / Tabelle / Datenbank änderst, änder sich an deinen bereits gespeicherten Daten (und das muss so sein) nichts - Du kannst zwar jetzt "äöü"s speichern, aber die alten Einträge werden immernoch fehlerhaft sein..

Meiner Meinung nach, solltest Du alles so belassen, wie es "jetzt" funktioniert und beim nächsten Projekt einfach daran denken: konsistent, konsequent, komme was wolle: UTF-8 / UNICODE ;) Das wirst du bei Deinen nächsten Projekten bestimmt schätzen.

Bei phpMyAdmin kannst Du gleich am Anfang auf der Übersichtseite und jedes mal, wenn Du eine neue Datenbank bzw. Tabell bzw. Spalte erstellst, den Zeichensatz wählen.

Kurz: machs mit utf8_encode(), und das nächste mal gleich mit den "richtigen" Datenbank Einstellungen.

HappyBirthday2Me und gute Nacht ;)
 
Jo, da stehen die 3 entscheidenden Variablen als Systemstandard auf latin1 und nicht auf UTF8

character set client utf8
(Globaler Wert) latin1
character set connection utf8
(Globaler Wert) latin1
character set results utf8
(Globaler Wert) latin1

Das rot markierte sind die Werte für die Sitzung, diese dürften von PHPMyAdmin gesetzt werden.
Genau dasselbe musst du auch machen....zur Datenbank verbinden und als allererstes das bereits von mir erwähnte Query absetzen
Code:
SET names utf8
...das setzt diese 3 Variablen für die Sitzung auf UTF8
 
Also erstmal vielen Dank an alle! :)

@boast: So werde ich das auch mal mache. Aber da mein Projekt bis jetzt auf localhost mit XAMPP lief, es aber eigentlich auf meinem Webspace laufen soll, werde ich versuchen die Einstellungen von Anfang an so zusetzten das es klappt. Und alles gute von mir :)

@Sven diese Sitzungsvariablen (die roten) kann ich durch den Query setzen. Kann ich den auch den globalen Wert einfach auf UTF8 setzten, und das mir so ersparen?
 
Ja hallo,
ich misch mich hier mal ein, denn ich habe gerade das gleiche Problem... und ich bin kurz vorm Verzweifeln...

Ich speichere mittels Formular Daten in meiner Datenbank.

Ich habe ALLE Collations die ich finden konnte und mir zugänglich waren (habe keinen eigenen Server) - d.h. Datenbank, Tabelle, Felder, MySQL-Verbindungen der Datenbank auf "utf_general_ci" gesetzt

Ich habe
HTML:
<form accept-charset="utf-8" action="index.php" method="post" name="Name">
eingefügt.

Ich habe sogar mal versucht den Charset des HTML-Metas auf "utf_general_ci" zu setzen. Das hat natürlich nicht geklappt, da wurde dann nich mal mehr die Umlaute der Seite korrekt angezeigt...
Jetzt ist Meta-Tag wieder
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ich würde es echt gerne mal korrekt hinbekommen - aber es klappt einfach nicht.
 
Sofern du Zugriff auf die my.cnf hast, kannst du das ändern.

Code:
default-character-set=utf8

Das denke ich weniger das ich Zugriff darauf habe :p Aber wenn ich drauf achte das ich beim erstellen von Datenbanken, Tabellen etc. ausschließlich UTF-8 benutze ist das Problem ja eigentlich behoben :)

@DrEvil: In den vorherigen Posts findest du den Beitrag das sich durch nachträgliches ändern der Kollation etc. die Daten der Datenbank trotzdem nicht ändern! Vllt liegt es ja daran!

#EDIT:
Achja, eine Methode wäre ja das ich zunächst mein Inhalt aus der Datenbank mit mb_detect_encoding() prüfe und dann falls es ISO-8859-1 ist, utf8_encode() anwende, oder seh ich das falsch?
 
Zuletzt bearbeitet:
Das denke ich weniger das ich Zugriff darauf habe :p Aber wenn ich drauf achte das ich beim erstellen von Datenbanken, Tabellen etc. ausschließlich UTF-8 benutze ist das Problem ja eigentlich behoben :)

Nö, eben nicht.
Diese 3 Variablen müssen halt auch die entsprechenden Werte haben, und da hat der Datensatz der Tabellen keinen Einfluss drauf.

Es sollte aber nicht sehr umständlich zu bewerkstelligen sein, in seiner DB-Klasse dies kleine Query einzubauen :)
 
Zurück