WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Hallo!
Ich stehe vor einem Rätsel:
Diese Seite ist das Original:
https://dastorberg.at/wien/champagner-zu-mitnehmen.php
WBCE 1.5.3, PHP 8.0
Die Liste ist mit Topics gemacht, die Seite gibt es schon recht lange.
Hier habe ich eine neue Installation in die selbe Datenbank, per einfachem Script lade ich die obigen Topics-Einträge auf die Seite:
https://champagner-wien.at/pages/test.php
Ebenso WBCE 1.5.3, PHP 8.0
Warum habe ich hier ein Umlaut-Problem?
In der DB ist alles utf8_unicode_ci, auch die Spaltenkollationen
Wo soll ich den Fehler suchen?
Beitrag geändert von ruebezahl (24.10.2022 14:23:46)
Offline
config.php vergleichen, ist da eventuell ein Eintrag
define('DB_CHARSET', 'utf8');
zu ergänzen oder zu entfernen? (Das ist tatsächlich von der Server- bzw. PHP-Konfiguration abhängig, manchmal braucht man den, manchmal nicht)
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Danke Florian, das war schon mal ein heißer Tipp!
Allerdings führt das zu neuer Verwirrung:
Die alte Site https://dastorberg.at enthält in der config.php: define('DB_CHARSET', 'utf8_unicode_ci');
Ändere ich das zu define('DB_CHARSET', 'utf8'); habe ich die gleichen Umlautprobleme wie auf der neuen https://champagner-wien.at
In https://champagner-wien.at -> config.php hingenen steht define('DB_CHARSET', 'utf8');
Ändere ich das zu utf8_unicode_ci funktioniert die ganze Site nicht mehr. Das Errorlog zeigt mir massenhaft Fehler und Warnings in outputfilter_dashboard/functions.php
Da die Website sonst kaum Inhalte hat, nehme ich an, dass die weiße Seite von daher kommt.
Offline
damit gab es letztens schon mal Probleme. Da reagiert irgendwo ein regEx über und sanitized die Unterstriche raus, so dass nur utf8unicodeci über bleibt, und das funktioniert natürlich nicht.
ich glaube, das ist in der functions.php.
Ich sehs schon kommen, die 1.5.4 wird nicht all zu lange auf sich warten lassen bei den ganzen Bugs...
(Das Problem mit der falschen Leerzeichen-Ersetzung in den Dateinamen muss auch dringend gelöst werden)
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Aber auf dastorberg.at funktioniert es mit define('DB_CHARSET', 'utf8_unicode_ci');
Da läuft ebenfalls 1.5.3 und PHP 8.0
Allerdings wurde die Site schon Zig mal upgegradet, die andere ist ganz frisch.
Beide Installationen laufen über die selbe DB (verschiedene Prefix)
Offline
Kannst Du bitte mal folgendes ausprobieren:
framework/class.database.php, Zeile 56
$this->sCharset = strtolower(preg_replace('/[^a-z0-9]/i', '', (defined('DB_CHARSET') ? DB_CHARSET : '')));
ändern zu
$this->sCharset = strtolower(preg_replace('/[^a-z0-9_-]/i', '', (defined('DB_CHARSET') ? DB_CHARSET : '')));
Funktioniert es dann mit der Angabe utf8_unicode_ci wieder?
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Hallo & Danke,
Das bringt keine Änderung. Möglicherweise liegt das Problem auch ganz woanders.. (-> Mail)
Offline
Sodanna! Dank der tatkräftigen Unterstützung von Florian hat sich das Problem gelüftet und konnte dann soweit beseitigt werden.
Hier war der Wurm:
--> Die alte Site https://dastorberg.at enthält in der config.php: define('DB_CHARSET', 'utf8_unicode_ci');
Das hat lange funktioniert, aber nach einem Upgrade auf WBCE 1.5.2 (?) wurden Zeichen falsch in der DB gespeichert.
Das ist auf dastorberg.at nicht aufgefallen, aber eben jetzt auf champagner-wien.at, weil da ja define('DB_CHARSET', 'utf8'); in der config.php stand.
Wirklich betroffen war auch nur ein Modul, eben das, in dem die ganzen Champagner-Namen mit ihren Sonderzeichen standen.
Die Lösung:
ein Script, das die betroffenen Felder durchackert, per str_replace - und ggf wieder in die DB zurückschreibt.
[== PHP ==]
$bad = array('é','ü','€','ê','ö','ä','â','á','ñ','Â');
$good = array('é','ü','€','ê','ö','ä','â','á','ñ',' ');
...
$title2=str_replace($bad,$good, $title);
$short_description2=str_replace($bad,$good, $short_description);
if ( $title2 != $title OR $short_description2 != $short_description) {
$sql2 = "UPDATE `wb_mod_gin` SET `title` = '". addslashes($title2)."', `short_description` = '". addslashes($short_description2)."' WHERE `topic_id` = $topic_id";
$database->query( $sql2 );
} else {
continue;
}
Offline
florian