Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: PHP und MySQL mit Zeichensatz ISO-8859 und UTF-8 nebeneinander

    franc

    • Fördermitglied
    • Beiträge: 97
    Hallo

    ich habe ein Problem mit den Umlauten:

    Ich habe auf meinem Server, auf dem modified eCommerce Shopsoftware-1.05-SP1b läuft auch noch andere Seiten gehostet.
    Diese brauchen UTF-8, was ja heute auch Standard ist.
    Ich habe daher in der php.ini stehen:

    default_charset=UTF-8

    und in der my.cnf von MySQL habe ich eingetragen:

    init-connect='SET NAMES utf8'

    Auf diese Weise werden aber u.a. in Bestellbestätigungsmails die Umlaute in den Kommentaren (die der Kunde bei der Bestellung abgeben kann) sowie die Umlaute in den Bankdaten des EU-Standard Bank Transfer (z.B. MODULE_PAYMENT_EUTRANSFER_BANKNAM aus der Datenbank) falsch dargestellt, nämlich statt Umlaut jeweils zwei schräge Zeichen (UTF-8 wird als ISO-8859 interpretiert).

    Beispiel:
    Kommentar des Kunden (Ihre Anmerkungen): À,Ã,ÃŒ,Ä,Ö,Ãœ,ß (statt ä,ö,ü,Ä,Ö,Ü,ß)

    Wenn ich das init-connect='SET NAMES utf8' aus der my.cnf testweise auskommentiere, funktionieren die Umlaute im Mail zwar, aber jetzt erhalte ich im Shop überall statt Umlauten kleine Kästchen mit Fragezeichen, weil der Browser plötzlich denkt, es handelt sich um UTF-8 (wegen dem oben erwähnten Eintrag in der php.ini). Kommentiere ich auch das default_charset=UTF-8 aus, funktioniert (wohl) alles.
    Allerdings habe ich jetzt mit allen anderen Seiten des Servers Probleme, da habe ich jetzt statt Umlaute die Fragekästchen :(

    In der .htaccess vom xtc-Shop habe ich zwar, bei aktiven obigen php.ini und my.cnf Einträgen, reingeschrieben:

    AddDefaultCharset ISO-8859-15

    aber das bringt nichts.

    Wie kann ich aber den Shop auf ISO-8859-15 laufen lassen, alle anderen PHP-Seiten des Servers aber mit UTF-8?
    Oder sehe ich da was grundsätzlich falsch?

    Mein Shop: modified eCommerce Shopsoftware-1.05-SP1b
    DB: MySQL: 5.5.24
    PHP Version: 5.3.10

    Gruß franc



    Linkback: https://www.modified-shop.org/forum/index.php?topic=20546.0

    ut2k3

    • Moderator
    • Beiträge: 497
    • Geschlecht:
    Was haben die Tabellen für einen Zeichensatz. Die Tabellen können trotz des default_charset mit der collation latin1 laufen.

    Rob

    franc

    • Fördermitglied
    • Beiträge: 97
    Die Tabellen haben alle brav latin1_swedish_ci, der MySQL Server ist aber im Standard auf UTF8 gestellt.

    mouseworx

    • Schreiberling
    • Beiträge: 254
    • Geschlecht:
    Du kannst mal folgendes testen:

    Frontend: inc/xtc_db_connect.inc.php
    Backend: admin/includes/functions/database.php

    Code: PHP  [Auswählen]
    if ($$link) mysql_select_db($database);

    ändern in

    Code: PHP  [Auswählen]
    if ($$link) { mysql_select_db($database); mysql_query("SET NAMES 'iso-8859-1'"); }

    Grüße
    Sebastian

    franc

    • Fördermitglied
    • Beiträge: 97
    Das werde ich ausprobieren*

    Ist denn das Szenario, dass der MySQL Server und PHP auf UTF-8 eingestellt sind und dennoch darauf modified eCommerce Shopsoftware läuft so ungewöhnlich?

    *Edit:
    Ich sehe gerade, das Problem hatte ich ja beim Umstellen schon damals:

    http://www.modified-shop.org/forum/index.php?topic=15306.0

    Aber da hatte das auch schon nichts gebracht, siehe dort, wo ich es tatsächlich schon ausprobiert hatte.

    mouseworx

    • Schreiberling
    • Beiträge: 254
    • Geschlecht:
    Bisher gibt es nur eine Beta Version von modified eCommerce Shopsoftware mit UTF-8 Unterstützung. Die offiziellen Releases für den produktiven Betrieb setzen alle noch auf ISO-8859-15.

    Wenn dein modified eCommerce Shopsoftware Shop auf UTF-8 laufen soll ist zur Zeit noch Handarbeit angesagt - aber er läuft auch mit UTF-8, definitiv.

    Grüße
    Sebastian

    franc

    • Fördermitglied
    • Beiträge: 97
    Ja das habe ich schon gesehen, dass es da Bemühungen gibt, aber diese sind wohl noch im frühen beta Stadion.
    Nicht für produktiv.

    Also außer die oben erwähnte Möglichkeit, also:
    mysql_query("SET NAMES 'iso-8859-1'" ) ;
    die bei mir nichts ändert kann ich derzeit nur wieder auf ISO umstellen und versuchen die anderen Seiten, die der Server bedient auf UTF-8 zu biegen, oder?

    mouseworx

    • Schreiberling
    • Beiträge: 254
    • Geschlecht:
    Hast du es denn wirklich mal getestet oder nur gesehen das du es im anderen Thread mal an anderer Stelle und auf andere Weise versucht hast und es nichts gebracht hat?

    Vielleicht geht es auch, wenn du deinen UTF-8 Standard aus der my.cnf raus nimmst und für jede Seite beim Connect explizit angibst wie du die Daten für diese Domain gerne hättest.

    Grüsse
    Sebastian

    franc

    • Fördermitglied
    • Beiträge: 97
    Hast du es denn wirklich mal getestet ...
    Nein, du hast recht, ich hab mich auf den damaligen Test verlasen, weil ich denke dass es der gleiche wäre. Aber ich teste es nachher mal/nochmal.

    franc

    • Fördermitglied
    • Beiträge: 97
    ...
    Code: PHP  [Auswählen]
    if ($$link) { mysql_select_db($database); mysql_query("SET NAMES 'iso-8859-1'"); }
    ...
    So, jetzt also getestet, in my.cnf wieder das utf8 rein und in der inc/xtc_db_connect.inc.php (und sogar in der admin/includes/functions/database.php) geändert, das ändert aber nichts.
    Allerdings steht das geringfügig anders da, also habe ich es so geändert:
    Code: PHP  [Auswählen]
    if ($$link) {
        // fcw: zuvor:
        // @mysql_select_db($database) or die('Database not available');
        @mysql_select_db($database);
        @mysql_query("SET NAMES 'iso-8859-1'");
    }

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    MySQL bietet dazu eine Vielzahl von Parametern, deren Auswirkungen bedacht sein wollen. Die Parametern sind in Systemvariablen abgelegt und können vom Client abgefragt werden.

    SHOW VARIABLES LIKE 'character_set%';
    SHOW VARIABLES LIKE 'collation%';

    Der Server kann prinzipiell einen beliebigen Zeichensatz halten und die result sets für den Client umcodieren. Eine SQL-Abfrage liefert also nicht unbedingt das zurück, was in der Datenbank steht.

    Sinnig ist das allerdings nicht unbedingt, denn wenn Du utf-8 in der DB hast und dort Zeichen stehen, die der Client nicht darstellen kann, fällst Du doch wieder auf die Nase.

    Wenn Du testest, solltest Du unbedingt die Sortierfolge anschauen und die Suche nach Umlauten in Groß- und Kleinschreibung mit "like" probieren. Like liefert unabhängig von der Groß- Kleinschreibung ein Ergebnis zurück, wenn Du die richtigen Einstellungen hast.

    franc

    • Fördermitglied
    • Beiträge: 97
    Ich glaube ich lasse den UTF8 Parameter aus my.cnf raus, sowie den aus der php.ini und versuche die anderen Seiten, die UTF-8 brauchen, anzupassen.

    Der Shop ist die einzige wirklich produktive Seite, bei der es wichtig ist, dass er Umlaute korrekt anzeigt.
    Das tut er ja, wenn man kein utf-8 vorgibt.

    mouseworx

    • Schreiberling
    • Beiträge: 254
    • Geschlecht:
    Es wundert mich eigentlich, dass es bei dir nicht geht. Ich vermute irgendwelche anderen Parameter in deiner Serverumgebung, die hier zum tragen kommen.

    Ich glaube ich lasse den UTF8 Parameter aus my.cnf raus, sowie den aus der php.ini und versuche die anderen Seiten, die UTF-8 brauchen, anzupassen.

    Genau so war der zweite Satz meines letzten Postings gemeint...  :thumbs:

    Grüße
    Sebastian
    1 Antworten
    3983 Aufrufe
    08. September 2010, 11:06:51 von floh
    10 Antworten
    4220 Aufrufe
    20. Mai 2016, 12:14:15 von web28
    9 Antworten
    1581 Aufrufe
    27. Dezember 2022, 13:02:52 von lachralle
               
    anything