OXID & Emojis in URL - utf8mb4_bin?


#1

Moin!

Emojis kann man inzwischem im Thunderbird bei seinem Absendernamen einbauen und sind überall Standard.

Wenn man nach “emoji liste” googlet findet man einige Treffer mit Emojis im Title und Snippet. Finde ich sehr interessant, da genau diese Treffer hervorstechen. (ob seriös oder nicht ist eine andere Baustelle :wink:

Ich würde nun gerne zumindest in unseren Title und Kategorie-URL entsprechend den Artikeln Emojis einbauen. Nur leider läuft OXID unter UFT8 - Emjos benötigen aber utf8mb4_bin soweit ich weiß.

In der Datenbank habe ich es testhalber bei “OXSTARTTITLE_1” mal umgestellt. Ich kann die Emojis nun zwar in SQL speichern, aber im OXID Admin sehe ich statt den Emojis nur zwei Fragezeichen. :frowning:

Den ganzen OXID auf ein anderes charset umstellen will ich natürlich nicht. Aufwand wäre beim nächsten Update für die Tonne. Gibt es noch einen anderen Weg?

Danke
Heiko


#2

nein, man muss dafür die Codierung der Verbindung zur Datenbank ändern, das ist eine Änderung am Core und geht afaik nicht in einem Modul.


#3

OXID. 4.10.x

core/oxdb.php

/**
* Setting up connection parameters - sql mode, encoding, logging etc
*
* @param ADOConnection $oDb database connection instance
*/
protected function _setUp($oDb)
{
// @deprecated since v5.3.0 (2016-06-07).
// The SQL logging feature is deprecated. This feature will be removed.
$_iDebug = self::_getConfigParam(’_iDebug’);
if ($_iDebug == 2 || $_iDebug == 3 || $_iDebug == 4 || $_iDebug == 7) {
try {
$oDb->execute(‘truncate table adodb_logsql’);
} catch (ADODB_Exception $e) {
// nothing
}
if (method_exists($oDb, “logSQL”)) {
$oDb->logSQL(true);
}
}
// END deprecated

    $oDb->cacheSecs = 60 * 10; // 10 minute caching
    $oDb->execute('SET @@session.sql_mode = ""');

    if (self::_getConfigParam('_iUtfMode')) {
        $oDb->execute('SET NAMES "utf8mb4"');
        $oDb->execute('SET CHARACTER SET utf8mb4');
        $oDb->execute('SET CHARACTER_SET_CONNECTION = utf8mb4');
        $oDb->execute('SET CHARACTER_SET_DATABASE = utf8mb4');
        $oDb->execute('SET character_set_results = utf8mb4');
        $oDb->execute('SET character_set_server = utf8mb4');
    } elseif (($sConn = self::_getConfigParam('_sDefaultDatabaseConnection')) != '') {
        $oDb->execute('SET NAMES "' . $sConn . '"');
    }
}

so sollte das klappen, aber wie gesagt, ziemlicher hack…


#4

wobei du recht hast, die utf8 codierung ist total kaputt und mb4 gehört dringend in den oxid.


#5

Danke. Dazu müsste ich aber wohl die gesamte DB auf uft8mb4 umstellen.
Wobei rein von der Logik utf8mb4 mit UTF8 zurecht kommen müsste - nur nicht anders herum!? :slight_smile:

utf8mb4 ist halt idiotensicher bzw. variabler.

Vielleicht kann das auf die to do Liste von den Entwicklern :wink:


#6

ja, du kannst du die spalten die du brauchst auf utf8mb4 umstellen und den rest so lassen, is halt hässlich, v.a. der DB Connection hack.


#7

Jetzt wird es interessant.
Ich habe dieses Emoji in die Meta Description eingebaut:
:white_check_mark:

Das speichert OXID ohne (!) Änderungen und wird so auch bei google angezeigt.
(www.sotel.de bei google falls es jemand nicht glaubt)

Wieso klappt es dann bei title und Menüs nicht!?


#8

welche title und menüs meinst du?


#9

Einmal Grundeinstellungen => Seo => Titel der Startseite und dann eben die Kategorienamen.

Hier würde es sich bei google glaube ich sehr gut machen, wenn das passende Emoji neben dem Kategorienamen in den Suchtreffern des Kunden auftaucht.


#10

ALTER TABLE oxshops CHANGE OXNAME OXNAME VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ‘’ COMMENT ‘Shop name’;
ALTER TABLE oxshops CHANGE OXTITLEPREFIX OXTITLEPREFIX VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ‘’ COMMENT ‘Shop name’;

damit seh ich emojis im title


#11

Titel der Startseite: ALTER TABLE oxshops CHANGE OXSTARTTITLE OXSTARTTITLE VARCHAR( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ‘’ COMMENT ‘Shop name’;

alles ohne gewähr :wink:


#12

Danke - wird getestet und Rückmeldung kommt :slight_smile: