Ich schreibe grade an meinem Newsscript, also das ich Einträge schreiben, editieren oder löschen kann.
Nun zeigt sich bisher aber ein gravierendes Problem.
Ich habe die Einträge in einer Datenbank gespeichert (Zeichensatz: ‘latin1_general_ci’), und muss diese in eine als UTF-8 kodierte Datei (Das Newsscript) auslesen.
Dabei entstehen jatzt natürlich immer dies Schönen ? Zeichen oder irgendein anderer Quark.
Hab auch schon Probiert, den Zeichensatz in der DB auf utf8_bin zu ändern, keine Änderung.
Da der Newseintrag in einem Textarea zum editiren ausgegeben wird, scheiden Entities aus.
Was kann ich tun, damit die Sachen korrekt abgespeichert werden, und auch korrekt ausgelesen werden?
Und warum verwendest du nicht ueberall die gleiche Kodierung?
Zwischen Kodierungen hin und her zu wechseln, ist immer unschoen und meist mit Nebenwirkungen verbunden; bis hin zum Verlust von Informationen, weil sich nicht alle Zeichen in jeder Kodierung abbilden lassen.
Wie und wo?
Meine Empfehlng waere, neu anzufangen - ueberall UTF-8 verwenden, und dann Daten neu eintragen.
Das klingt bloedsinnig.
Wenn Entities ausscheiden, dann weil UTF-8 existiert.
Naja, der Fallback fuer aeltere Version wird im Manual ja auch erwaehnt - allerdings nicht unbedingt empfohlen, da der sich ggf. noch woanders auswirken kann.
So, habe jetzt nach einem langen Kampf endlich XAMPP 1.7 und PHP 5.2.8 drauff.
Doch jetzt spinnst htmlentities
Und zwar habe ich folgenden Code:
// UTF-8 kodierte Datei
...
mysql_set_charset("utf8");
...
//$eintrag-> name kommt aus einer utf-8 kodierten datenbank
echo htmlentities($eintrag->name, ENT_QUOTES, "utf-8");
Sobald jetzt in $eintrag->name Umlaute enthalten sind, gibt htmlentities gar nichts mehr aus, in allen Fällen ohne Umlaute geht es aber prima…
Schreibe ich stattdessen iso-8859-1 oder ähnlich, gehts auch…
Und leider ist das andere Problem im Textarea seit der anderen Xampp Version auch wieder da…
Der Header stimmt, und bei hphMyAdmin war auch alles ok.
Ich hatte mysql_set_charset vor dem einbinden der Logklasse benutzt, wodurch sich der Aufruf dann auf die Klasse mit ihrer Verbindung bezog, nicht auf die DB-Verbindung für das Script…
Verwende jetzt auch htmlspecialchars, wobei die anfangs das selbe Problem hatte (nichts ausgab)
Thx chris. Ich poste demnächst nochmal nen paar Screenshots, da das für euch ja nicht zugänglich ist (Es sei den ihr schafft es, bei mir Admin zu werden ^^ )
Die echos dienen nur zum debuggen. beim ersten ist der str noch da, auch richtig geteilt durch “<–|-->”.
Ziel ist es, einen max. 240 Zeichen langen Teilstring mit ‘…’ am Endezu erhalten.
EDIT:
Hier noch die Fehlermeldung:
Warning: Wrong parameter count for strstr() in D:\Programme\xampp\htdocs\new_jw-lighting\news.php on line 262