Versteckte "charset=utf-8" Werte?

ev0lst

Erfahrenes Mitglied
Hallo.

Ich sitze jetzt schon den 2. Tag an meinem Problem hier. Es geht mal wieder um das alte Leid --> UTF-8 :)

Die Datenbank steht auf "utf8_general_ci" und die Einträge sind auch als UTF8 gespeichert (Sehe ich doch anhand von einem Exportieren, wenn der Text normal (unzerstört) angezeigt wird, oder?)

Beim Eintragen der Einträge wird auch alles richtig angezeigt und es wird auch im Header "utf-8" angezeigt. Auf der Ausgabeseite ebenfalls...

Daher kam ich nun zur Annahme, dass es sich dabei um irgendein versteckten Wert handeln muss, der alles zerstört. Ich habe auch folgenden Code über jede betroffene Index.php gemacht:

PHP:
	header('Content-Type: text/html; charset=UTF-8');

Hat jemand eine Idee, wie ich da vorgehen kann? Leider bringt alles nichts und ich weiß auch nicht mehr, was ich machen soll....

Danke
 
Bist du dir sicher, dass die Eingabewerte auch UTF-8-kodiert an die Datenbank geschickt wurden? Denn auch wenn die Daten innerhalb der Datenbank selbst mit UTF-8-Kodierung gespeichert und als so kodiert bei der Ausgabe ausgezeichnet werden (dein Beispiel ist übrigens falsch, Radhad), müssen die Daten auch bei der Eingabe die richtige Kodierung haben.
 
Um sicher zu sein, dass der In- und Output bei der DB-Kommunikation UFT-8 Kodiert ist musst du nachdem du dich zu DB verbunden hast, folgende zwei Abfragen ausführen:

Code:
SET NAMES 'utf8';
SET CHARACTER SET utf8;

In den meisten Fällen ist es nämlich so, dass zwar DB-Intern die Daten mit UTF-8 gehandgabt werden, aber bei der Übergabe an ein Script die Daten wider nach ISO-8859-1 codiert werden.

Weiterhin solltest du für die Reibungslose ausgabe auch die Option "default_charset" bei PHP auf UTF-8 stellen.

PHP:
ini_set('default_charset', 'UTF-8');

Gruss
ZeroEnna
 
Nabend und Danke für die vielen Antworten. Habe schon gedacht ich werde gesteinigt, weil das Thema so durchgekaut ist ;)

Ich habe das mit der Query nach dem connect eingebunden, nämlich so:

PHP:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

In der Index.php habe ich zu Beginn jeweils das eingefügt:

PHP:
<?php

	header('Content-Type: text/html; charset=UTF-8');  

...

?>

Also befindet sich bei der Eingabe diese Funktion darüber... und alle Connections werden mit dem SET NAMES und SET CHAR. definiert...

Meiner Meinung nach alles, was möglich ist...?!


PHP:
ini_set('default_charset', 'UTF-8');

Muss ich das in der ini ändern?

Danke
 
Nabend und Danke für die vielen Antworten. Habe schon gedacht ich werde gesteinigt, weil das Thema so durchgekaut ist ;)
In dieser ISO-8859-1-dominierten Welt ist es nicht einfach gegen den Strom zu schwimmen. Doch in Zukunft wird sich Unicode durchsetzen.

Zurück zum eigentlichen Anliegen: Sind die Eingabedaten denn auch UTF-8-kodiert?
 
Das stimmt. Es wird sich durchsetzen... ist einfach viel einfacher zu handeln...... wenn man es mal geschafft hat ;)


---

Zum Thema:

Ich übergebe die Daten einfach per POST und mache sie per INSERT in die Datenbank. Ebenso mit UPDATE.

Ich übergebe die Daten klar in die Datenbank ohne Funktionen o.ä. Also quasi "unberührt". Ist das falsch?

Wenn ich nun jede Query ändern müsste, wäre das wirklich viel Arbeit :)
 
Das Query nicht unbedingt, aber die Inputs die du in deinem Query benutzt, vorher durch die Funktion [phpf]utf8_encode[/phpf] durchjagen.

Vielleicht löst das deine Probleme schon ;)
 
Das ist ja dann sogar noch mehr Arbeit ;)

Kannst Du mir einmal ein kleines Beispiel zeigen, wie Du das meinst?
Ist das soweit immer üblich? Erscheint mir sehr "umständlich". Da aber viele Scripts mit utf8 laufen, ist es sehr aufwändig...
 
Hmm, soweit ich weiß, wird die Funktion häufiger genutzt... ;)

PHP:
$query = "INSERT INTO `table` (`column`) VALUES( '".utf8_encode($value)."')";
 

Neue Beiträge

Zurück