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: SHOP UTF-8 ...

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #90 am: 05. März 2016, 00:09:08
    Wie wär's mit einem Update auf die aktuelle Version ?
    Das schlichte Einfügen von
    Code: PHP  [Auswählen]
    define('DB_SERVER_CHARSET', 'utf8');
    in die configure.php hat keine Wirkung weil die definierte Konstante nirgends benutzt wird.

    Versuch mal testweise folgendes:
    In die /inc/xtc_db_connect.inc.php fügst du das ein
    Code: PHP  [Auswählen]
    // set charset defined in configure.php
    if(!defined('DB_SERVER_CHARSET')) {
        fine('DB_SERVER_CHARSET','latin1');
    }
    if(function_exists('mysql_set_charset')) { //requires MySQL 5.0.7 or later
      mysql_set_charset(DB_SERVER_CHARSET);
    } else {
      mysql_query('SET NAMES '.DB_SERVER_CHARSET);
    }    

    und zwar vor
    Code: PHP  [Auswählen]
    return $$link;

    Bin aber nicht sicher ob das reicht.
    Danach Browser-Cache löschen und schauen ob's okay ist.

    Gruß,
    noRiddle

    0815

    • Viel Schreiber
    • Beiträge: 905
    Re: SHOP UTF-8 ...
    Antwort #91 am: 05. März 2016, 00:22:27
    Zitat
    Wie wär's mit einem Update auf die aktuelle Version ?

    Weil's ein Multishopsystem ist, kann ein normales Update damit leider nicht durchgeführt werden.
    Stand denn in der Anleitung, dass min 1.06 installiert sein muss?
    Ich ging davon aus, dass es auch mit meiner älteren Version ohne größere Probleme funktioniert.

    Zitat
    Bin aber nicht sicher ob das reicht.

    Nein, reicht leider nicht.
    Bin ich froh, dass es nur ein Testshop ist.

    0815

    • Viel Schreiber
    • Beiträge: 905
    Re: SHOP UTF-8 ...
    Antwort #92 am: 05. März 2016, 00:38:20
    Ah, jetzt ja.

    Es funktioniert an den meisten Stellen.
    Einige Einträge im Content-Manager muss ich aber vermutlich von Hand editieren.

    Ist die Zeile eigentlich richtig?
    Code: PHP  [Auswählen]
    fine('DB_SERVER_CHARSET','latin1');

    Sollte da nicht utf-8, oder utf8 stehen?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #93 am: 05. März 2016, 01:25:36
    Sorry, das sollte so heißen:
    Code: PHP  [Auswählen]
    define('DB_SERVER_CHARSET','latin1');
    Da ist mir das "de" vor "fine" abhanden gekommen.

    Ja, latin1 ist richtig, ist aber auch egal.
    Das dient nur dazu, daß wenn die Konstante DB_SERVER_CHARSET nicht definiert ist es ein Fallback auf latin1 gäbe.
    Das Fallback könnte genauso gut auf utf8 fallen, das ist noch aus den bisherigen Versionen wo latin1 eben Standard war.

    Das sollte eigtl. so funktionieren wie ich dir geschrieben habe.
    Der Code definiert die Verbindung zur Datenbank. Die DB weiß somit, daß UTF-8 verlangt wird und liefert es.
    Allerdings auch nur wenn die Daten in der DB okay sind.

    ...
    Mein Verdacht ist, dass aufgrund eines Bugs in Mysql der Teil COLLATE utf8_general_ci ignoriert wird, wenn CONVERT TO CHARACTER SET utf8 nichts zu tun bekam. Eventuell kommt da intern innerhalb der Engine null anstatt true.

    Schau mal in die Tabelle content_manager ob da überall wo es char(), varchar(), text und ähnliches gibt auch die Collation utf8_general_ci steht.
    Kannst von Hand in phpMyAdmin nochmals folgendes ausführen falls das nicht der Fall ist.
    Code: SQL  [Auswählen]
    ALTER TABLE content_manager COLLATE utf8_general_ci;

    Gruß,
    noRiddle

    0815

    • Viel Schreiber
    • Beiträge: 905
    Re: SHOP UTF-8 ...
    Antwort #94 am: 05. März 2016, 01:35:50
    Danke, die Datenbank schaue ich mir gleich noch an.

    Gibt es evtl. auch einen Zusammenhang zwischen der Umstellung auf UTF-8 und dem Ausfall der Suche in meinem Frontend. Die Suche liefert keine Treffer mehr, im Backend funktioniert alles.
    Könnte natürlich auch ein Fehler beim Clonen des Testshops vorliegen. Ich weiß nicht, ob es beim Testshop vor der Umstellung noch funktioniert hat.

    Zusatzfrage:
    Ich muss offensichtlich noch einige Dateien, wie z.B. Dateien in /media/Conten/ und viele Sprachdateien für Module, etc. Anpassen. So lange die nämlich noch auf "Westeuropäisch" codiert sind, werden die Umlaute noch falsch angezeigt.

    So führe ich die Umstellung zurzeit aus: Mit Dreamweaver öffnen und Im Menü auf Modifizieren>Seiteneigenschaften>Titel/Kodierung, dort auf UTF-8 umstellen, anwenden und speichern.

    Kann man das mit einem Script, oder Tool evtl. für alle Dateien des Shops automatisiert ausführen, oder dürfen bestimmte Dateien in der Form nicht angepasst werden?

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: SHOP UTF-8 ...
    Antwort #95 am: 22. November 2016, 13:33:24
    einen Shop nachträglich auf UTF-8 umzustellen.

    Darf ich Dich bitten, mal den neu erstellten Wiki-Beitrag zur Konvertierung mittels MySQL-Bordmitteln gegenzulesen?

    Datenbank von latin1 (iso-8859-1) auf utf8 umstellen

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #96 am: 22. November 2016, 23:48:32
    Das sieht gut aus.
    Insbesondere auch
    Zitat
    ...sondern gar auf Feldebene den Zeichensatz explizit angeben...
    Bevor wir also importieren, durchsuchen wir das Ergebnis noch einmal nach falschen Angaben und ersetzen diese entsprechend.

    Es fehlt noch was Dateianpassungen betrifft:
    Die Anpassung der setlocale() in den Sprachdateien (/lang/SPRACHE/SPRACHE.php und /lang/SPRACHE/admin/SPRACHE.php).

    Gruß,
    noRiddle

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: SHOP UTF-8 ...
    Antwort #97 am: 23. November 2016, 08:59:26
    Danke, das wäre mir entgangen, weil ich grundsätzlich neu installiere und dann die Datenbank nachziehe. Ich nutze Migrationen in aller Regel dazu, alten Ballast über Bord zu werfen.

    Trotzdem habe ich den Hinweis eingearbeitet, für andere Vorgehensweisen ist er notwendig.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #98 am: 23. November 2016, 09:16:02
    Bei dem Hinweis sollte man noch mit angeben, das "de_DE.UTF-8" sollte als ALLERERSTES angegeben werden!

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: SHOP UTF-8 ...
    Antwort #99 am: 23. November 2016, 09:23:47
    Warum?

    Das PHP Handbuch sagt nichts über die Reihenfolge, in den Beispielen ist meist eine Umgebungsvariable der erste Parameter.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #100 am: 23. November 2016, 09:25:55
    Weil es sonst auf die Fresse fliegt, und zwar beim darstellen von einem Datum im März:
    http://www.modified-shop.org/forum/index.php?topic=26848.msg314346#msg314346

    0815

    • Viel Schreiber
    • Beiträge: 905
    Re: SHOP UTF-8 ...
    Antwort #101 am: 23. November 2016, 09:38:21
    Moin,

    die Anleitung sieht augenscheinlich gut aus, weil die Umstellung bei mir jedoch ein "paar Tage" zurückliegt, kann ich mich nicht mehr an meine einzelnen Schritte erinnern.
    Den Ablauf meiner Umstellung habe ich zwar in einer eigenen Anleitung zusammengefaßt, aber da ich kein Programmierer bin und mein Shop alles Andere als Standard ist (Multishop mit unzähligen Modifikationen) hilft das in der Sache nicht wirklich weiter.

    Dennoch, hier ein paar Punkte, die ich noch zusätzlich geändert habe, weil es sonst irgendwo gehakt hat. (Mein Shop basiert noch auf Version 1.05):

    - Dateien gegen aktuellere Version austauschen:
    /includes/modules/metatags.php
    /admin/stats_customers.php

    - /includes/application_top.php + /admin/includes/application_top.php
    jeweils ganz oben einfügen:
    Code: PHP  [Auswählen]
    ini_set("default_charset", "utf-8");

    -In die /inc/xtc_db_connect.inc.php einfügen:
    Vor return $$link;
    Code: PHP  [Auswählen]
    // set charset defined in configure.php
    if(!defined('DB_SERVER_CHARSET')) {
        define('DB_SERVER_CHARSET','utf8');
    }
    if(function_exists('mysql_set_charset')) { //requires MySQL 5.0.7 or later
      mysql_set_charset(DB_SERVER_CHARSET);
    } else {
      mysql_query('SET NAMES '.DB_SERVER_CHARSET);
    }

    - /inc/xtc_validate_password.inc.php
    Code der Datei durch folgende Zeilen ersetzen:
    Code: PHP  [Auswählen]
    function xtc_validate_password($plain, $encrypted) {
        if (xtc_not_null($plain) && xtc_not_null($encrypted)) {
          // split apart the hash / salt
          if ($encrypted== md5($plain)){
                return true;
          } else {
            $plain = mb_convert_encoding($plain, "ISO-8859-15", "UTF-8");
            if ($encrypted== md5($plain)){
                  return true;
            } else {
                  return false;
            }
          }
        }
        return false;
      }

    - /includes/header.php
    suchen:
    Code: PHP  [Auswählen]
    if (isset($_GET['error_message']) && xtc_not_null($_GET['error_message'])) {
            $smarty->assign('error','<p>'. htmlspecialchars(urldecode($_GET['error_message'])).'</p>');
    }
    if (isset($_GET['info_message']) && xtc_not_null($_GET['info_message'])) {
            $smarty->assign('error','<p>'.htmlspecialchars($_GET['info_message']).'</p>');
    }

    ersetzen durch:
    Code: PHP  [Auswählen]
    if (isset($_GET['error_message']) && xtc_not_null($_GET['error_message'])) {
            $smarty->assign('error','<p>'. utf8_encode($_GET['error_message']).'</p>');
    }
    if (isset($_GET['info_message']) && xtc_not_null($_GET['info_message'])) {
            $smarty->assign('error','<p>'.htmlspecialchars($_GET['info_message']).'</p>');
    }

    Darüber hinaus waren bei mir noch folgende Dateien anzupassen:
    - /admin/start.php
    - /admin/includes/classes/import.php
    - /includes/classes/afterbuy.php

    Dann habe ich noch sehr viele Dateien mit Dreamweaver geöffnet, im Menü unter Modifizieren>Seiteneigenschaften>Titel/Kodierung UTF-8 ausgewählt, angewendet und abgespeichert.

    Liste der Dateien:
    /media/content/...
    /includes/modules/metatags.php
    /includes/header.php
    /tempaltes/standard/modules/product_info/product_info_v1.html
    /tempaltes/standard/modules/order_details.html
    /tempaltes/standard/mail/...
    /admin/includes/column_left.php
    /admin/includes/header.php
    /inc/shopstat_functions.inc.php

    Liste der Sprachdateien:
    /lang/german/lang_german.conf
    /lang/german/german.php
    /lang/german/contact_us.php
    /lang/german/modules/payment/...
    /lang/german/modules/shipping/...
    /lang/english/lang_english.conf
    /lang/english/english.php
    /lang/english/contact_us.php
    /lang/english/modules/payment/...
    /lang/english/modules/shipping/...
    /lang/german/admin/orders.php
    /lang/german/admin/csv_backend.php
    /lang/german/admin/paypal.php
    /lang/german/admin/modules.php
    /lang/english/admin/modules.php

    Wie bereits erwähnt, bin ich kein Programmierer. Ob das alles Hand und Fuß hat, kann ich deshalb nicht ermessen, für meinen Shop waren die o.g., zusätzlichen Schritte aber scheinbar erforderlich.

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: SHOP UTF-8 ...
    Antwort #102 am: 23. November 2016, 10:15:38
    Weil es sonst auf die Fresse fliegt, und zwar beim darstellen von einem Datum im März:
    http://www.modified-shop.org/forum/index.php?topic=26848.msg314346#msg314346

    Du weißt also auch nicht, warum. ;)

    Eine mögliche Erklärung steht im Handbuch. Die Funktion versucht, die richtige Einstellung für das darunter liegenden Betriebssystem zu finden. Die erste verfügbare Einstellung wird übernommen.

    Daraus würde folgen, dass alle Parameter mit einer abweichenden Zeichensatzangabe überflüssig oder gar schädlich sind.

    Kann das jemand bestätigen, oder bleibt nur ausprobieren?

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: SHOP UTF-8 ...
    Antwort #103 am: 23. November 2016, 10:21:17
    ...
    Dennoch, hier ein paar Punkte, die ich noch zusätzlich geändert habe, weil es sonst irgendwo gehakt hat. (Mein Shop basiert noch auf Version 1.05):
    ...

    Danke. Ich füge einen Verweis auf den Beitrag für ältere Versionen ein.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Re: SHOP UTF-8 ...
    Antwort #104 am: 23. November 2016, 12:50:19
    Doch, ich weiß warum.

    Zitat
    Die erste verfügbare Einstellung wird übernommen.

    Heutige Linuxsysteme brauchen 'de_DE.UTF-8' um richtig zu funktionieren, können aber irgendeine der anderen Optionen auch, und nehmen dann diese falsche ..... die auf älteren Systemen Sinn machen kann
               
    anything