Charset will einfach nicht :(

Kracky

Mitglied
Hallo zusammen,

ich versuch schon seit geraumer Zeit die darstellung gewisser MySQL inhalte als UTF-8 ausgeben zu lassen.
Leider will das ganze nicht so wie ich will.

Folgendes passiert:
Ich habe eine MySQL Datenbank eingerichtet mit einer Tabelle wo ich einfach nur gewisse Texte mit ID speichere.
Also quasi ID: 1 Text: Irgendeintext mit einem Sonderzeichen wie Ü zum Beispiel.

Bei der Ausgabe dieses Textes benutze ich einfach nur mysql_query und danach mysql_fetch_object.

Der Text kommt dann nur Leider wie folgt raus:
Irgendeintext mit einem Sonderzeichen wie ? zum Beispiel.

Habe dann die Datenbank auf UTF-8_general_ci umgestellt sowie auch alle einträge in der Tabelle.
in der php.ini habe ich den default_charset auf UTF-8 umgestellt sowie auch in der my.ini.
Im meta tag, im head-bereich habe ich auch das charset auf UTF-8 gemacht.
htaccess datei mit default charset auf UTF-8 bringt leider auch nichts.
Auch die Datei an sich ist als UTF-8 kodiert und der Browser hat als Kodierungsanzeige auch UTF-8 eingestellt.


Trotz all dieser Maßnahmen habe ich trozdem keinen Erfolg.

Für die Entwicklungsumgebung benutze ich einfach nur Xampp.

Fällt euch noch etwas ein was ich da machen könnte?

Achso noch eine Anmerkung vieleicht: Auf dem Webserver gibt es diese Probleme nicht, also wenn ich die Dateien sowie die Datenbank hochlade sind alle Probleme verschwunden. Also irgendeine Einstellung muss doch da falsch sein bei mir?
 
Zuletzt bearbeitet:
Hallo,

ich habe dasselbe Problem. Gut, nachdem ich festgestellt das es auf meinem Server funktioniert war es mir egal.

Als ich vor Kurzem ein Javascript geschrieben hatte und dort die Ausgabe auch keine Umlaute unterstützte habe ich bei Notepad++ die Kodierung auf UTF-8 umgestellt, das behebte das Problem. Aber da du die Datensätze aus der Datenbank holst, sollte es hier ein anderes Problem sein.

Gruß
 
Genau und wie ich schon geschrieben habe sind die .php-Dateien alle schon UTF-8 kodiert.

Und das es auf dem Server funktioniert ist zwar schön und gut, aber es nervt halt für die richtige Formatierung immer die html codes des jeweiligen Zeichens zu schreiben was auf dauer auch Zeit kostet.
 
Hallo,

du schreibst, du hast in der my.ini den default charset eingestellt. Wo genau also in welcher Sektion der my.ini hast du das gemacht?
 
Verbindungscharset gesetzt (SET NAMES)?
Funktionieren die Umlaute bei PHPMA?
Funktioniert soetwas wie echo "Ü";?
Versuch mal rauszufinden an welcher Stelle der Fehler ist, mit andern Worten :p
 
@saftmeister
Sorry hab mich vertan, meinte nicht die my.ini sondern die httpd.conf. Dort habe ich einfach
AddDefaultCharset utf-8
hinzugefügt.

@alxy
Die Umlaute und Sonderzeichen funktionieren alle Einwandfrei wenn ich sie direkt in das Dokument eintippe. Wie gesagt es kommt nur wenn ich die Daten aus der MySQL Tabelle ausgeben lasse.
Also quasi

PHP:
$id = 1;

$abfrage = mysql_query("SELECT text FROM tabelle WHERE id = '$id'");
$row = mysql_fetch_object($abfrage);

echo $row->id;

Wenn ich an den Anfang
PHP:
mysql_query("SET NAMES 'utf8'");
setze, dann funktioniert es, aber damit ist der server ja immernoch nicht richtig eingestellt.

Als vorrübergehende Lösung ist das schonmal ganz gut, danke für den Hinweis.
Aber vieleicht fällt dem ein oder anderen ja noch etwas ein, womit ich das Problem dauerhaft beseitigen kann.

bei PHPMA sind sie korrekt angezeigt. Erst bei der Ausgabe werden sie geändert.
 
Zuletzt bearbeitet:
Naja, es ist so:

Die Verbindung vom PHP-Script zum MySQL-Server hat ebenfalls ein Encoding. Daher auch meine Frage, was in der my.ini eingetragen wurde. Denn wenn du in der my.ini bei

Code:
[client]
default-character-set=utf8
einstellst, erreichst du das gleiche, wie wenn du "SET NAMES 'utf8'" als Query sendest.
 
aber dieser Absatz ist in der my.ini garnicht vorhanden :confused:

/xampp/mysql/bin/my.ini <- ist das die korrekte?

ich hab mal gegoogelt und öfter wird die auch im Windir angegeben, dort ist aber keine.
 
Zurück