[Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
resp
Beiträge: 9
Registriert: Fr 19. Aug 2016, 11:50
Kontaktdaten:

[Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von resp »

Hallo Zusammen,

ich möchte gerne das HTML Unicode-Zeichen eines Telefons (☎) in Contenido anzeigen.
Das Charset der Seite ist auf utf-8 eingestellt und sofern es außerhalb von Contenido Eingabefeldern (Backend, CMS_HTML-Editor) wird dieses auch korrekt dargestellt (Auch der E-Mail Versand funktioniert problemlos).

Über conSaveContentEntry() speichere ich Inhalte eines FE-Formulars und hierbei wird aus dem Unicode ("☎") einfach ein "?". Tests haben ergeben, dass einige Unicode-Symbole wie das copyright-Symbol (©) jedoch angezeigt werden. Verwendet wird Contenido 4.9.8; Ein Update auf Contenido 4.9.11 hat leider keine Abhilfe geschaffen. Die Seite wurde zu 4.9.8-Zeiten aufgesetzt (Update von 4.8.x)

Bei einer Neuinstallation (Frisch) wiederum wird das Zeichen unter 4.9.11 korrekt dargestellt.

Ist zu diesem Problem etwas bekannt oder übersehe ich lediglich etwas?
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von rethus »

Dann versuch es doch mal mit dem richtigen Unicode-Zeichen ☎ , und nicht der HTML-Entsprechung.
Ein Versuch wäre es wert.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
resp
Beiträge: 9
Registriert: Fr 19. Aug 2016, 11:50
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von resp »

Hallo,

habs vergessen zu erwähnen. Ich habe es sowohl mit dem eigentlichen "Ergebnis" (☎) sowie mit dem Code (☎) probiert.
Beim Copyright-Symbol (©) funktionieren beide Variationen...

Das Telefon-Symbol in beiden Variationen wird irgendwo (vermutlich) beim Speichern in der Datenbank zu einem "?" geändert
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 14 Mal
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von Faar »

Nicht alle Schriftsätze haben alle Zeichen.
Das © ist z.B. in Arial Latin 1 (ISO 8859-1) enthalten, aber schon nicht mehr in deren ASCII Entsprechung, wobei das @ in ASCII enthalten ist.
Dieses Telefonzeichen ☎ ☎ ist nur in Arial Miscellaneous Symbols enthalten. Wenn ich das über die Tastatur versuche hier einzutippen, erscheint das hier: ♫
Also ich habe dieses Symbol nicht in meinem Zeichensatz drin oder an anderer Stelle.

Was folgt daraus?
Für Web lieber einen Icon- oder Symbol-Schriftsatz in die Seite installieren, gibt auch freie kostenlos.
Irgendeiner wird sicher ein Telefon haben.
http://t3n.de/news/10-kostenlose-icon-fonts-450651/
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
resp
Beiträge: 9
Registriert: Fr 19. Aug 2016, 11:50
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von resp »

Danke für die Erklärung, Faar.

Leider kann ich dennoch nicht 100% nachvollziehen warum der HTML-Code dann beim Speichern in ein "?" gewandelt wird. Da der Inhalt bis dahin einwandfrei dargestellt wird.

Testweise haben wir in der Datenbank, die im Latin 1 kodiert ist (da ältere Contenido-Installation), den HTML-Code "☎" direkt in den Content eingepflegt. Dabei wurde der Inhalt nun korrekt dargestellt. Bei einem erneuten Speichern hingegen kam wieder nur ein "?" anstelle des Symbols und Codes.
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 14 Mal
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von Faar »

Hast Du die Schrift mit dem Telefon-Symbol auch in die Webseite eingebunden oder nur angegeben und auf jedem Gerät muss die eigen installierte Schrift das Symbol liefern?
https://de.wikipedia.org/wiki/Hilfe:UTF ... gezeigt.3F

Wenn Du es nur so gemacht hast, wundert mich nichts:

Code: Alles auswählen

font-family: Arial, Helvetica, sansserif;
Dann hoffst Du, dass jeder auf dem PC auch das Telefon-Symbol in seinem Schriftsatz hat.
Dazu siehe im Absatz oben.

Wenn Du es z.B. so gemacht hast:

Code: Alles auswählen

@font-face {
    font-family: myTelefoneFont;
    src: url(fonts/Telefone_symbols.woff);
}

span.myfont {font-family: "myTelefoneFont", Arial, Helvetica, sansserif;}

<span class="myfont">☎</span>
...und sich die Schrift physikalisch auch in Deinem cms/fonts/ Verzeichnis befindet, dann sollte es auch das Symbol anzeigen.
Darum nehmen Frontend-Designer auch eigene Symbolschriften auf den Server, damit die Symbole auch wirklich auf jedem Gerät ankommen und es kein Zufallstreffer bleibt, ob einer zufällig das Symbol im Zeichensatz-Fundus hat oder nicht.

Nun zu Deiner Erfahrung mit der Datenbank:
Das Fragezeichen beim Speichern in die Datenbank und wieder auslesen entsteht oft dann, wenn doppelt gemoppelt wird.
Zweimal utf-8 Umwandlung gibt ?
Irgendwo wird scheints dein utf-8 Telefon nochmal in utf-8 umgewandelt.
Da es in der Datenbank richtig angezeigt wird, könnte es z.B. am Formular liegen, das in UTF-8 liefert und als UTF-8 Dokument physikalisch gespeichert ist, oder an der Übergabe in die Datenbank.
Das ersten kannst du testen, wenn du die Formular-Datei mal in einen Script-Editor wie Notepad oder PSPad lädst und schaust, ob die Datei als utf-8 formatiert ist.
Beim letzteren solltest Du vielleicht mal alle Datenbank-Tabelle und was du so erwischen kannst, als utf-8 Kollation ändern.
Ich weiß jetzt nicht genau welche, aber könnte die utf-8 general ci sein, die passt.

Ich musste letzteres auch machen, um eine Thai-Schrift mit Thai-Schiftsatz auch in der DB speichern zu können. Bis dahin erschienen auch nur Fragezeichen und anderes.
Denn die 4.9 gibt zwar vor, dass sie utf-8 eingestellt hat aber eine bestehende Datenbank, die z.B. in Latin-1 ist, wandelt sie nicht mehr in utf-8 um.
Da müsste das Setup von 4.9 eigentlich noch eine Routine bekommen, die bei bestehender Datenbank erst die DB selbst in utf-8 ändert, bevor die Daten installiert werden.

Ich habe neulich eine neue 4.9.9 Installation gemacht und da sind alle Tabellen und die DB in latin1_swedish_ci
Das macht kein Problem, solange man in Deutsch und Englisch schreibt und nicht so Sonderwünsche hat wie "Telefone" oder Thai-Schrift.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
resp
Beiträge: 9
Registriert: Fr 19. Aug 2016, 11:50
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von resp »

Hallo nochmal,

nochmals vielen Dank für die Hilfestellung - dennoch konnte ich das Problem bisher nicht lösen.
Beim Testen mit mehreren Maschinen konnte ich zudem seltsame Verhalten beobachten, die allerdings sicherstellen sollten, dass das Problem nicht am Zeichensatz/Font liegen dürfte (Genutzt wird Arial) sondern vielmehr beim Speichern von Contenido in die Datenbank, mögl. bei der Tabellencodierung.

Nochmal der Ablauf:

Das Icon für das Telefon (☎) wird auf Buttonklick als Zeichen in eine CKEditor-Textarea gesetzt. Gebe ich mir den Inhalt des Feldes aus, so erhalte ich das Symbol im Browser - nicht den HTML-Code.
Das Formular wird per POST übergeben und zum Debuggen mit print_r ausgegeben. Das Zeichen ist wie erwünscht da. Eine E-Mail geht raus (utf8-codiert) -> Symbol in E-Mail vorhanden.
Der Inhalt des Formulars wird per conSaveContentEntry() in die DB gespeichert -> Datenbank und Contenido zeigen ein ? anstelle des Symbols an.

Gehe ich nun ins Contenido Backend und setze an die Stelle des ? wieder das Telefon-Symbol so wird mir solange ich nicht speichere das Telefon-Symbol angezeigt. Bei einem Klick auf Speichern erhalte ich erneut ein ?. Die Datenbank zeigt ebenfalls ein ?.

Gehe ich nun in die Datenbank und füge dort den Code direkt ein, so zeigt mir Contenido im Front- und Backend wie erwünscht das Telefon-Symbol an. Im Editor, im Contentfeld, in den Rohdaten. Klicke ich nun in Contenido erneut auf Speichern ---> ? statt Symbol.

Daher kann ich nicht ganz sehen warum der Zeichensatz der Grund für den Fehler sein soll.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von homtata »

Wahrscheinlich das gleiche Problem wie im Thread für "tschechische Zeichen", dort schrieb ich:
Ich habe für ein Projekt, wo das mit den türkischen Zeichen schiefging, damals in einigen DB-Tabellen einzelne Felder umgestellt von latin auf utf8_general_ci.

Dazu gehören u.a.
in con_art_lang: title, pagetitle, summary
in con_content: value
in con_cat_lang: name

Vielleicht hilft das ja, ABER: mach vorher UNBEDINGT ein Datenbankbackup, falls die Daten danach nicht mehr korrekt ausgelesen werden und du ein Fallback brauchst.
LG
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von rethus »

Gutes Debugging. Vorbildlich!
Damit weißt du, das es die Speicher-Routine von Contenido sein muss.
Da du es bis conSaveContentEntry zurück verfolgt hast, musst du dort ansetzen um den Fehler weiter einzugrenzen.
XDebug kann da eine sehr große Hilfe sein, weil du die Variablenwerte während der Scriptlaufzeit einsehen kannst.

Bist du vertraut mit xdebug, und kannst du deine Installation damit lokal debuggen?

Woran es ggf. auch liegen könnte... prüfe doch mal, mit welchem Zeichensatz sich Contenido zur Datenbank verbindet. Es kann ja durchaus sein, das die DB zwar UTF-8 ist, aber die eigentliche Verbindung von Contenido zur DB iso ist.
http://php.net/manual/de/function.mysql ... coding.php
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von frederic.schneider_4fb »

Wir haben leider relativ spät, auch konsequent erst über mehrere Versionen, das System auf Utf8 umgestellt. Es wundert mich daher nicht, dass es mit einer frischen 4.9.11-Installation klappt und mit einer aktualisierten nicht. Die Datenbanktabellen z. B. sind dann nämlich schon geschrieben. Der Tipp von homtata scheint mir daher ein guter Ansatz zu sein, ansonsten das, was rethus schreibt, wenn homtatas Tipp nicht weiterhilft ;-).
Frederic Schneider
Entwickler bei der four for business AG
resp
Beiträge: 9
Registriert: Fr 19. Aug 2016, 11:50
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von resp »

homtata hat geschrieben:Wahrscheinlich das gleiche Problem wie im Thread für "tschechische Zeichen", dort schrieb ich:
Ich habe für ein Projekt, wo das mit den türkischen Zeichen schiefging, damals in einigen DB-Tabellen einzelne Felder umgestellt von latin auf utf8_general_ci.

Dazu gehören u.a.
in con_art_lang: title, pagetitle, summary
in con_content: value
in con_cat_lang: name

Vielleicht hilft das ja, ABER: mach vorher UNBEDINGT ein Datenbankbackup, falls die Daten danach nicht mehr korrekt ausgelesen werden und du ein Fallback brauchst.
LG
Gerade mal probiert. Hat geklappt! Die Zeichen werden nun wie gewünscht dargestellt
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [Con 4.9.8] Telefon-Unicode wird durch "?" ersetzt

Beitrag von frederic.schneider_4fb »

Super :D
Frederic Schneider
Entwickler bei der four for business AG
Antworten