Eigenes Modul - statt Umlauten nur Fragezeichen in Raute

  • Moin moin,


    ich arbeite im Moment mit Joomla 3.6.5 lokal, die Datenbank ist "Server-Version: 10.1.19-MariaDB". Für eine besondere Anwendung (Kinoprogramm) habe ich für die speziellen Daten mit SQLMaestro ein eigenes Backend gebaut, das auch tadellos funktioniert. Insbesondere die Umlaute werden so wieder ausgeworfen, wie ich sie eingegeben habe. Im HTML-Header der dort erzeugten Seiten steht unter anderem:

    Code
    <meta charset="UTF-8">[/b][b]

    [/b]


    Das Modul, das ich für Joomla selbst geschrieben habe und per loadposition einbinde, funktioniert auch wie gewünscht, alles super ... aber leider bis auf eine erhebliche Kleinigkeit: Umlaute werden als "Fragezeichen auf einer stehenden Raute" (ich hoffe dieses Zeichen geht hier so durch: ) dargestellt. Das Zeichen ist für jeden Umlaut das gleiche. Im HTML-Header dieser von Joomla erzeugten Seite steht:

    Code
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />


    Alles, was ich an Umlauten ansonsten in diesem Modul per Joomla BE eingebe, erscheint korrekt. Nur die Inhalte aus meinen "Extratabellen" erscheinen mit verstümmelten Umlauten ...


    Jetzt schaue ich mir die Datenbank an: Server-Zeichensatz: UTF-8 Unicode (utf8)


    Mit PHPMyAdmin stimmt die Anzeige und die Ausgabe. Hier ist - wie bei meinem eigenen Backend - auch wieder alles in Ordnung. Die einzelnen Tabellen sind allerdings mit "utf16_german2_ci" angelegt.


    Für die Joomla-Tabellen ist hingegen "utf8mb4_unicode_ci" eingestellt. Da habe ich meine eigenen Tabellen ebenfalls so eingestellt und auch ausgewählt "Alle Spaltenkollationen ändern" - null Ergebnis. Noch immer ist in PHPMyAdmin alles gut, im eigenen Backend auch - aber die Ausgabe im eigenen Modul ist unverändert verwurstet.


    Jetzt weiß ich nicht mehr weiter! Die Umlaute werden offenbar nicht nur beim Ausgeben aus der Datenbank vermurkst, ich habe auch einen String drin mit einem Umlaut, der genauso verkehrt aussieht, also ist die Datenbank nicht (alleine ...) schuld.

    Wo sollte ich noch weitersuchen??
    Der Quellcode des Moduls ist bis heute unverändert auf einer mit Joomla 1.5x laufenden Seite genauso eingebunden, ich habe für den Umbau sogar die Datenbank 1:1 kopiert. Auf dem Webserver läuft der alte Code einwandfrei. Das macht es eine Ecke rätselhafter. ;(


    Im Code passiert nichts Aufregendes: Abfrage mit mysqli-Funktionen und dann etwas Gebastel mit Tabellen-Tags. Die Modulentwicklung habe ich mit Eclipse gemacht. Diese Codezeile hier:

    Code
    echo "<td width=\"75%\"><strong>" . $zeile->film_titel . "</strong>";[/b][b]

    [/b]
    gibt das hier aus: "Pl�tzlich Papa!"




    Vielen Dank
    Andreas

  • Im Quelltext steht es "richtig". Ich will da auch nicht mit Funktionen ran, denn an anderer Stelle geht es ja auch "ohne". Außerdem hätte ich dann auch in den Code von SQLMaestro irgendwo einzugreifen ....
    Wahrscheinlich ist "nur" irgendwo die Einstellung für den Zeichensatz verdreht, aber ich komme einfach nicht drauf, wo. Dort, wo das Skript bald abgelöst wird, arbeitet es in identischer Form tadellos *).
    So steht es im Modul selbst als Beitrag: "(ÄÖÜäöü) Das laufende Programm" und es wird korrekt angezeigt. Dann folgt mit loadposition mein Skript, und es folgt:
    Programm f�r die Woche vom 19.01.2017 bis 25.01.2017 Im Quelltext steht das Wort "für" aber korrekt.
    Darunter folgt die Datenbankausgabe: Pl�tzlich Papa! was in der Datenbank aber korrekt mit "ö" steht und im besonderen Backend stimmt sowie in PHPMyAdmin.


    Ratlos ...
    Andreas


    *) habe lediglich die Datenbankzugriffe von mysql_ auf mysqli umgestellt

  • Nein, keinerlei Effekt. Die Tabelle habe ich von utf8mb4_unicode_ci auf utf8_german2_ci umgestellt und dabei auch alle Spaltenkollationen geändert, brachte auch nichts. "set_charset" hat null Auswirkungen gehabt.
    Und im mit SQLMaestro gemachten Backend sowie in PHPMyAdmin waren die Umlaute bislang auch immer korrekt. Nur eben nicht in dem eingebundenen Teil des Moduls. Mein Quellcode enthält auch keinen eigenen HTML-Header, der es verderben könnte, und was ich außerhalb "loadposition" schreibe, ist ja auch richtig.
    Immer ratloser,
    Andreas

  • Cache vom Browser geleert und nun brachte diese Einstellung:
    Tabellen auf utf8_german2_ci umgestellt und "set_charset"
    immerhin eine korrekte Ausgabe der Datenbankinhalte - herzlichen Dank! Was den manuell erzeugten String angeht, ist der ja im Quelltext nicht kodiert. Merkwürdig, aber da kann ich mit leben. An das Programm gehe ich wahrscheinlich ja eh nicht mehr ran. Liegt es evtl. an Eclipse? Das ist mir früher nämlich nicht passiert ...
    Danke schön,
    Andreas

  • Nochmal zum Abschluß: es lag tatsächlich an den Einstellungen des Eclipse-Projektes, dass die fest eingegebenen Texte nach wie vor verhunzt waren. Auf der Einstellungsseite "Properties" zum PHP-Projekt muss man auf "Resource" gehen und unter "Text file encoding" auswählen: "other", dann "utf-8" (oder was gerade gebraucht wird).
    danke,
    Andreas