• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Andauernd "?" auch im Listenfeld

Andy Nagel

Mitglied
Hallo zusammen,

ich bin dabei, mir ein Dialogfenster zu basteln um einen Link aus meiner Linksammlung verschieben zu können. D. h. dass auf dem Formular Text für Informationen, Buttons, sowie ein Listenfeld angezeigt wird.

Aber egal was ich in der Zeichenkodierung angebe, es wird der Text nie korrekt in dem Listenfeld dargestellt. Egal was ich in einer meta angebe, es verschwindet dabei nur das Symbol im Text auf dem Formular. Und zur Abfrage führe ich dazu eine php Datei aus, in diese ich zur Rückgabe der Daten momentan utf8_decode("$Entries"); schreibe und so anstatt eines Symbols aus Umlauten ein ? mit einem Symbol wird, oder vorhin auch ein größeres Symbol mit ? gesichtet wurde.

Also was soll ich wo nun was angeben? Ich dachte halt mit dem aus der Datei könnte mir hilfen. Aber leider ja auch nicht, so dass ich mich über Hilfe absolut freuen würde und mich bereits jetzt für jede Mühe auch bedanken möchte.

OK dann vielen Dank Gruß Andreas
 
Werbung:
Checkliste für die durchgängige und korrekte Verwendung von UTF-8

  • PHP- und HTML-/Template-Dateien im Editor als “UTF-8 ohne BOM” speichern. Dies betrifft auch alle etwaigen serverseitigen inkludierten Dateien.

  • HTTP Header Content-Type mit UTF-8 verwenden. header('Content-Type: text/html; charset=UTF-8');. Der HTTP-Header hat (abgesehen vom BOM) die höchste Priorität bei der Bestimmung der Zeichenkodierung.

  • HTML-meta-Tag
    HTML 4.x: <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    HTML 5: <meta charset="utf-8">

  • Formulardaten (falls explizit nötig) in UTF-8 übergeben (ggf. mit accept-charset="utf-8" sicherstellen)

  • Datenbankverbindung von PHP zur Datenbank auf UTF-8 stellen (zB mysqli_set_charset() für mysqli-Erweiterung). Siehe dazu auch MySQL und UTF-8

  • Datenbank Zeichensatz UTF-8, Tabellenkollationen utf8_unicode_ci. Siehe dazu auch MySQL und UTF-8

  • Daten aus Fremdquellen müssen mittels utf8_encode() in UTF-8 überführt werden, wenn sie nicht als UTF-8 vorliegen (Datei, Windows-System, …).

  • Bei der Anwendung von htmlspecialchars() und htmlentities() die Codierung mitgeben. Beispiel (HTML 5) für htmlspecialchars():

    function escape($s){
    return htmlspecialchars(
    $s,
    ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE,
    'UTF-8'
    );
    }
  • Generell ist darauf zu achten, das es zu keinen “Überkodierungen” kommt, zB wenn ein bereits als UTF-8 kodierter String erneut mittels utf8_encode() behandelt wird.
Quelle: Wissenssammlung php.de
 
Jo Hallo

und Vielen Dank für Deine Nachricht.Schön das ich dieser das eine und andere interessante entnehmen konnte, sie aber nicht mein Problem lösen konnte. Ich verwende das Umwandeln in utf8 nur für strings und gebe es nie auf meiner Seite vor.

Und so steht auf meiner ganzen Seite die ISO 8859-1in der Meta. Denn sobald ich hier utf-8 eingebe erschienen die Symbole mit den ? auf allen Seiten, außer auf der die aufgerufen wird. Aber auf allen eingebetteten Seiten, sowie dem Dialogfeld, bei dem sich aber auf der Liste nix ändern will. Und dann probierte ich es auch mal am Datenbank-Zeichenformat, was aber auch nix brachte.

Würde mich sehr freuen, wenn es zu weiterem von Euch geben könnte, so dass ich mein Projekt jetzt damit nicht abschließen müßte. Wofür ich mich natürlich nur bei Euch bedanken kann und freue mich auch sowas weiter lesen zu können.

Also hoffe bis dann und auf jeden Fall schon Mal vielen Dank mit Gruß Andreas
 
Werbung:
Du nutzt an irgendeiner Stelle nicht konsequent UTF-8. Wo das ist, kannst nur du rausfinden.

Prüfe folgendes:
  • Datenbank ist UTF-8?
  • Datenbank-Verbindung auf UTF-8 gesetzt?
  • charset=UTF-8?
  • Dateien im UTF-8 Format ohne BOM?
Stimmt nur ein Teil davon nicht, geht's in die Hose
 
Werbung:
OK

also schonmal vielen Dank an alle zusammen. Ich halt nur dran fest, dass wenn ich in der Meta utf-8 eingebe, stets ? auf meiner Seite habe und deshalb stets das ISO-8859-1 angebe. Und irgendwie klappt das jetzt doch wieder mit dem utf8_encode("$Entries"); das ich einsetze um wie üblich Strings in utf8 zu kodieren. Und auch die Datenbank ist jetzt in einer anderen utf8-kodierung.

Also jedenfalls sind jetzt in der Darstellung der Liste keine Symbole mehr zu sehen. Und nochmals vielen Dank an Euch.

Gruß Andreas
 
Werbung:
Ja und sorry, ich wollte meinen Beitrag auch gerade editieren.

Denn gestartet wird die Abfrage ja per ajax und mit dem Ergebnis dann per javascript befüllt. Und in der ajax funktion steht dann noch die Zeile:

contentType: "application/x-www-form-urlencoded; charset=UTF-8",

Und damit funktioniert jetzt halt alles, aber trotzdem OK und danke.

Gruß Andreas
 
Hallo zusammen

und da bin ich wieder mit meinem Problem. Ich fragte ja schonmal an, wieso ich ? in Listenfelder bekomme und ich wusste jetzt auch nicht wohin ich das Problem schreibem solle.

Dann jetzt mal wieder zu meinem Problem bei dem per javascript erstellten Text ein "?" anstatt ein "ü" zu erhalten. Und aber das auf der Hauptseite, die an anderen Stellen einwandfrei mit Umlauten umgehen kann. Und das auch wenn ich das iso-8859-1 als Kodierung eintrage, denn URF-8 bekomme ich hier nicht zu laufen. Und zwar nicht mit html lang="de" oder mit einer langen meta usw... Dann zeigen Formulare in den iframes ?Symbole auf ihren Buttons an usw..., so dass ich bei jeder Seite auf das iso-8859-1 setze und mir damit stets der volle Inhalt angezeigt wird. Außer natürlich jetzt. Aber das auch nicht mit dem ganzen utf-8 Gedönz. Aber wie gesagt das stets nur an dieser stelle.

Ich verschlüssel den ganzen Text erstmal per php und entschlüssel ihn wieder mit utf8_decode(), da ich mit decodeURIComponent gleich ein Sy,bol mit "?" bekomme. Und schreib ich den Text aus und schreib die Zeile so dass dieser per javascript drinstehen sollte, ist auch ein Symbol dabei.

Also was nun? Würde mich über eine Lösung stark freuen und mich bereits jetzt für jede Bemühungen stark bei Euch bedanken will.

Also Danke Gruß Andreas
 
Werbung:
Nur mal so:
Damit dieses
Andy Nagel schrieb:
bzw die UTF-8 Codierung funktioniert musst du in deinem Texteditor -> Speichern -> Codierung -> UTF-8
und in deinem HTML -> im head ->
Code:
<meta charset="utf-8">
und Umlaute und nicht
HTML:
&uuml; / &ouml; / &auml;
verwenden.
Dann werden die Umlaute überall auch als solche und nicht als � angezeigt
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben