• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Zeichenkodierung

Thyrael

Antonowka
Registriert
11.11.06
Beiträge
356
Hallo miteinander,

ich habe eine Frage bzw. ein Problem das mich mittlerweile ganz schön nervt. Ich erstelle zur Zeit eine Homepage. Der Inhalt wird zum Teil aus einer Datenbank geholt und zum Teil einfach nur aus Dateien.

Mein Problem ist die Zeichencodierung.

Alle Daten die aus der Datenbank ausgelesen werden, werden auch richtig wiedergegeben (Umlaute) Jedoch wird kein Umlaut der aus einer Datei kommt richtig ausgegeben. Ich hab schon alle möglichen Codierungen versucht doch keine funktioniert richtig. Nehme ich eine Codierung die die Dateien richtig darstellt, werden die Inhalte der Datenbank nicht richtig angezeigt, nehme ich eine Codierung bei der die Inhalte aus der Datenbank richtig dargestellt werden, sind die Inhalte aus den Dateien nicht richtig dargestellt.

Metatags werden nicht wirklich angenommen:

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

Ich hoffe ich konnte mich klar ausdrücken und hoffe außerdem dass mir jemand helfen kann, der dieses Problem vielleicht schon hatte... :)
 

drok

Klarapfel
Registriert
02.06.07
Beiträge
278
Code:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >

sollte eigentlich funktionieren
 

Thyrael

Antonowka
Registriert
11.11.06
Beiträge
356
Danke für die schnelle Antwort. Aber in diesem Metatag hab ich schon so ziemlich jede Codierung eingetragen. Immer das selbe Problem. Der einzige Unterschied ist, dass statt der Fragezeichen, dann andere Zeichen angezeigt werden. Sogar MacRoman hab ich schon probiert.. *gg*
 

drok

Klarapfel
Registriert
02.06.07
Beiträge
278
Zumindest sollten nun die Daten aus der DB korrekt dargestellt werden, oder ?

Welche Dateien ließt du denn aus ? Es kann sein das du diese Daten vor der Ausgabe konvertieren musst, damit die im Browser korrekt angezeigt werden.
 

Seddi

Fießers Erstling
Registriert
29.05.07
Beiträge
127
1. Lösung: du machst eine Abfrage deiner Eingabe, ob 'ä','ö','ü' oder 'ß' enthalten sind und wandelst diese in html-freundliche Werte um, z.B. ü, ö .. usw.

Nachteil: deine Werte liegen in diesem Format in der Datenbank, z.B. Würfel == Würfel.

2. Lösung: du verwendest die PHP-Funktion htmlentities() http://de3.php.net/htmlentities

Es gibt mit Sicherheit auch noch reichlich andere Lösungen, wie du das Problem umgehen kannst. Meinerseits hast du die beiden erhalten, vielleicht hilft dir das ja schon.
 

Thyrael

Antonowka
Registriert
11.11.06
Beiträge
356
Komischerweise nicht. Nehme ich utf-8 wird absolut kein Umlaut richtig dargestellt. Weder aus der Datenbank noch aus einer Datei.

Lasse ich den Codierungsmetatag komplett weg, werden die Umlaute aus der Datenbank richtig dargestellt... Jedenfalls aus der einen Tabelle aus einer anderen Tabelle und aus Dateien ==> nur Fragezeichen
 

drok

Klarapfel
Registriert
02.06.07
Beiträge
278
Kannst du vllt etwas Quellcode posten ?
Wie ließt du die Dateien aus, welche Dateien sind es überhaupt und in welchem Format stehen die Daten in der Datei ?

Vllt kommt man so einer Lösung schon etwas näher.

Mit utf-8 kannst du schonmal Umlaute direkt ins HTML schreiben, ohne die HTML-Entitäten verwenden zu müssen.

Ist jetzt bloß die Frage in welchem Format die Daten ankommen.
 

Hairy

Sonnenwirtsapfel
Registriert
07.08.07
Beiträge
2.397
Die Lösung ist, alles konsequent auf UTF-8 einzustellen und auch so auszuliefern.
Warum UTF-8? -> Darum.

Wie?
1. In deinem Code-Editor muss UTF-8 für jede einzelne Datei eingestellt sein.
2. Der Server muss angewiesen werden, als UTF-8 auszuliefern (
Code:
<?php header('content-type: text/html; charset=utf-8'); ?>
)
3. Die Datenbank muss auf UTF-8 eingestellt werden.

Mehr dazu hier.

Die beste, zukunftssicherste und einfachste Lösung.
Außerdem werden außer &lt;, &gt;, &quot; und &amp; werden keine Entities benötigt.
 

Thyrael

Antonowka
Registriert
11.11.06
Beiträge
356
Danke für eure schnelle Hilfe. Es war tatsächlich so, dass ich vergessen hatte im Code-Editor utf-8 einzustellen.
 

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Gerade umgekehrt

Bei mir verhält es sich gerade verkehrt herum: Die Daten aus der MySQL-Tabelle werden falsch angezeigt, also ç wird durch ein ? ersetzt, aber Zeichen aus einer Datei kommen richtig an.

Dabei sollte eigentlich alles stimmen, denn die Tips aus diesem Thread habe ich komplett umgesetzt:
  • Code:
    header('Content-Type: text/html; charset=utf-8');
    wird mitgesendet, am Anfang der Datei
  • MySQL ist auf utf8_unicode_ci eingestellt
  • META-Tag ist da, mit UTF-8
Wo könnte mein Fehler liegen oder gibt es eine Möglichkeit, das zurechtzubiegen? Die PHP-Funktion htmlentities hat zwar geholfen, aber es wäre mir lieber, wenn ich wirklich mit UTF-8 arbeiten könnte.
 

Hairy

Sonnenwirtsapfel
Registriert
07.08.07
Beiträge
2.397
Wie kommen denn die Daten IN die MySQL-Datenbank? Möglicherweise musst du das entsprechende Formular noch auf UTF-8 setzen. Wie MySQL das intern speichert, ist nicht so wichtig. Nur die Ausgabe muss zur Eingabe passen.
 
  • Like
Reaktionen: floeschen

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Danke für die Hilfe. ;)

Das Problem hat sich gelöst, dank einem Eintrag im Forum von SELFHTML. Nun sende ich einen MySQL-Query immer am Anfang jeder Seite, in dem folgendes steht:
Code:
SET NAMES utf8

Ich bin eben beim Aufbau eines kleinen für mich gemachten CMS und gebe die Daten bisher nur mit dem phpMyAdmin ein. Jetzt komme ich dann daran, per Formular alles einzugeben und zu ändern.