WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 21.10.2022 15:24:32

ruebezahl
Member

[gelöst] Umlaute -> Ich wieder mal zu blöd

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?

Last edited by ruebezahl (24.10.2022 13:23:46)

Offline

#2 21.10.2022 15:48:09

florian
Administrator

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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

#3 21.10.2022 16:19:51

ruebezahl
Member

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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

#4 21.10.2022 16:45:19

florian
Administrator

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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... sad
(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

#5 21.10.2022 17:00:33

ruebezahl
Member

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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

#6 23.10.2022 07:09:42

florian
Administrator

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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

#7 23.10.2022 09:19:04

ruebezahl
Member

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

Hallo & Danke,
Das bringt keine Änderung. Möglicherweise liegt das Problem auch ganz woanders.. (-> Mail)

Offline

#8 24.10.2022 13:05:27

ruebezahl
Member

Re: [gelöst] Umlaute -> Ich wieder mal zu blöd

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

Liked by:

florian

Board footer

up