mb_convert_encoding(): Argument #3 ($from_encoding)

  • Betroffene Version
    WoltLab Suite 5.3
    Betroffene App
    WoltLab Suite Forum

    Guten Morgen,

    Heute fand ich diese Fehlermeldung im ACP:

    Aufgerufene URL
    POST /cms/index.php?ajax-proxy/&t=4528c947a3f9013d2789f54e6250898c4d778f12
    Referrer
    https://domain.tld/cms/conversation/17832-hey-dude/?messageID=95718
    WoltLab Suite
    5.3.1
    PHP
    8.0.0
    Fehlermeldung
    mb_convert_encoding(): Argument #3 ($from_encoding) contains invalid encoding "iso-8895-15"
    Art
    ValueError
    Datei (Zeile)
    /var/www/domain.tld/public/cms/lib/util/StringUtil.class.php (498)
    Stacktrace
    1. /var/www/domain.tld/public/cms/lib/util/StringUtil.class.php (498): mb_convert_encoding(…)
    2. /var/www/domain.tld/public/cms/lib/system/event/listener/ReplaceURLByNameListener.class.php (192): wcf\util\StringUtil::convertEncoding(…)
    3. /var/www/domain.tld/public/cms/lib/system/event/listener/ReplaceURLByNameListener.class.php (70): wcf\system\event\listener\ReplaceURLByNameListener->fetchTitle(…)
    4. /var/www/domain.tld/public/cms/lib/system/event/EventHandler.class.php (221): wcf\system\event\listener\ReplaceURLByNameListener->execute(…)
    5. /var/www/domain.tld/public/cms/lib/system/html/input/node/HtmlInputNodeProcessor.class.php (183): wcf\system\event\EventHandler->fireAction(…)
    6. /var/www/domain.tld/public/cms/lib/system/html/input/HtmlInputProcessor.class.php (74): wcf\system\html\input\node\HtmlInputNodeProcessor->process(…)
    7. /var/www/domain.tld/public/cms/lib/data/conversation/message/ConversationMessageAction.class.php (681): wcf\system\html\input\HtmlInputProcessor->process(…)
    8. /var/www/domain.tld/public/cms/lib/system/message/QuickReplyManager.class.php (141): wcf\data\conversation\message\ConversationMessageAction->getHtmlInputProcessor(…)
    9. /var/www/domain.tld/public/cms/lib/data/conversation/message/ConversationMessageAction.class.php (279): wcf\system\message\QuickReplyManager->validateParameters(…)
    10. /var/www/domain.tld/public/cms/lib/data/AbstractDatabaseObjectAction.class.php (189): wcf\data\conversation\message\ConversationMessageAction->validateQuickReply(…)
    11. /var/www/domain.tld/public/cms/lib/action/AJAXProxyAction.class.php (72): wcf\data\AbstractDatabaseObjectAction->validateAction(…)
    12. /var/www/domain.tld/public/cms/lib/action/AJAXInvokeAction.class.php (94): wcf\action\AJAXProxyAction->invoke(…)
    13. /var/www/domain.tld/public/cms/lib/action/AbstractAction.class.php (47): wcf\action\AJAXInvokeAction->execute(…)
    14. /var/www/domain.tld/public/cms/lib/action/AJAXInvokeAction.class.php (61): wcf\action\AbstractAction->__run(…)
    15. /var/www/domain.tld/public/cms/lib/system/request/Request.class.php (83): wcf\action\AJAXInvokeAction->__run(…)
    16. /var/www/domain.tld/public/cms/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    17. /var/www/domain.tld/public/cms/index.php (9): wcf\system\request\RequestHandler->handle(…)

    Was hat diese zu beteuten? Anscheinend in einer PN benutzt?

    EDIT: SoftCreatR , gerade gesehen scheint von deinem Plugin zu kommen ReplaceURLByNameListener eventuell etwas im Link-Text was dahin nicht gehört, solltest vielleicht mal drüber schauen über deinen Code um das abzufangen, Danke :)

    ┌П┐(◉_◉)┌П┐

    Einmal editiert, zuletzt von TeRRible__KHONS (19. Dezember 2020 um 05:09)

  • eventuell etwas im Link-Text was dahin nicht gehört, solltest vielleicht mal drüber schauen über deinen Code um das abzufangen, Danke

    Da ich nun nicht glaube, das SoftCreatR eine Glaskugel besitzt oder Hellsehen kann, müsste er wohl den betreffende Link erfahren, ansonsten gleicht das der berühmten Nadel im Heuhaufen. :D

    Greetz

    Dark

    Mit dem Ende naht der Anfang mit etwas Neuen, um dann wieder zu sagen „Nach dem Update ist vor dem Update“. :S

  • Und ich habe auch keine Glaskugel und schaue auch nicht in die PNs anderer Leute in der Datenbank 😅

    Vielleicht melden sich die betroffenen deswegen.

    Aber ich bin mir sicher dass das trotzdem irgendwie abgefangen werden kann, ist vielleicht ein smiley oder sonst irgendein komisches Zeichen.

    Auch wenn man nicht genau weiß was es ist, kann das bestimmt trotzdem irgendwie herausgefiltert werden (allgemeine komische Zeichen die nicht a-z 0-9 usw. sind).

    Danke im voraus.

    ┌П┐(◉_◉)┌П┐

  • Vielleicht melden sich die betroffenen deswegen.

    Du jedenfalls hast dich bisher nicht gemeldet ;) Aber davon abgesehen: Ich kann den Fehler (auch unter PHP 8 ) nicht reproduzieren. Das hat auch nichts mit den verwendeten Zeichen zu tun, sondern mit einem Zeichensatz (iso-8895-15), den dein System scheinbar nicht (mehr) kennt.

    Kannst du testweise mal das Script ausführen?

    PHP
    <?php
    $iso885915 = '€ŠšŽžŒœŸ';
    $utf8 = mb_convert_encoding($iso885915, 'UTF-8', 'ISO-8859-15');
    
    var_dump(strlen($utf8) === 17);
  • Was gibt das zurück?

    Code
    Array ( [0] => wchar [1] => byte2be [2] => byte2le [3] => byte4be [4] => byte4le [5] => BASE64 [6] => UUENCODE [7] => HTML-ENTITIES [8] => Quoted-Printable [9] => 7bit [10] => 8bit [11] => UCS-4 [12] => UCS-4BE [13] => UCS-4LE [14] => UCS-2 [15] => UCS-2BE [16] => UCS-2LE [17] => UTF-32 [18] => UTF-32BE [19] => UTF-32LE [20] => UTF-16 [21] => UTF-16BE [22] => UTF-16LE [23] => UTF-8 [24] => UTF-7 [25] => UTF7-IMAP [26] => ASCII [27] => EUC-JP [28] => SJIS [29] => eucJP-win [30] => EUC-JP-2004 [31] => SJIS-win [32] => SJIS-Mobile#DOCOMO [33] => SJIS-Mobile#KDDI [34] => SJIS-Mobile#SOFTBANK [35] => SJIS-mac [36] => SJIS-2004 [37] => UTF-8-Mobile#DOCOMO [38] => UTF-8-Mobile#KDDI-A [39] => UTF-8-Mobile#KDDI-B [40] => UTF-8-Mobile#SOFTBANK [41] => CP932 [42] => CP51932 [43] => JIS [44] => ISO-2022-JP [45] => ISO-2022-JP-MS [46] => GB18030 [47] => Windows-1252 [48] => Windows-1254 [49] => ISO-8859-1 [50] => ISO-8859-2 [51] => ISO-8859-3 [52] => ISO-8859-4 [53] => ISO-8859-5 [54] => ISO-8859-6 [55] => ISO-8859-7 [56] => ISO-8859-8 [57] => ISO-8859-9 [58] => ISO-8859-10 [59] => ISO-8859-13 [60] => ISO-8859-14 [61] => ISO-8859-15 [62] => ISO-8859-16 [63] => EUC-CN [64] => CP936 [65] => HZ [66] => EUC-TW [67] => BIG-5 [68] => CP950 [69] => EUC-KR [70] => UHC [71] => ISO-2022-KR [72] => Windows-1251 [73] => CP866 [74] => KOI8-R [75] => KOI8-U [76] => ArmSCII-8 [77] => CP850 [78] => JIS-ms [79] => ISO-2022-JP-2004 [80] => ISO-2022-JP-MOBILE#KDDI [81] => CP50220 [82] => CP50220raw [83] => CP50221 [84] => CP50222 )

    EDIT: Da wird ISO-8859-15 jedenfalls aufgelistet.

    ┌П┐(◉_◉)┌П┐

  • Kannst du den Fehler reproduzieren? Also gehört die Konversation zu dir? Denn ich habe zwar eine Ahnung, woran es liegen könnte, habe aber keinen Link, um den Fix zu testen

    Leider nein, hab nur die Fehlermeldung gesehen, hab zwar im Forum bei mir mal gefragt wer diese PN geschickt hat um den Link zu erfahren, aber hat sich keiner gemeldet bisher.

    Aber sei es drum.

    Wieso ist die Ausgabe jetzt gut oder schlecht?

    Jedenfalls wird die genannte ISO erfolgreich ausgelistet bei der 2th Ausgabe 😊

    ┌П┐(◉_◉)┌П┐

  • Komisch 😊 jedoch wird das Iso gelistet also sollte das mbstring modul das eigentlich auch beherrschen.

    Wenn ich den Link irgendwie erfahre (ohne in die Datenbank zu schauen, das will ich aus Datenschutzgründen nicht machen und wäre auch denke ich rechtswidrig) gebe ich dir sofort bescheid.

    Aber vielleicht haste ja auch so eine Ahnung an was es liegt und kannst es beheben :)

    Danke dir 👍💪

    ┌П┐(◉_◉)┌П┐

  • Probier's mit dem Script:

    PHP
    <?php
    require __DIR__ . '/global.php';
    
    $conversationMessage = (new \wcf\data\conversation\message\ConversationMessage(95718))
        ->getSimplifiedFormattedMessage();
    
    preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $conversationMessage, $matches);
    
    wcfdebug($matches[0]);
  • SoftCreatR Kann dir den Link leider nicht mehr liefern:

    Code
    Argument 0 (array)
    Array
    (
    )
    wcfDebug() called in /var/www/domain.tld/public/TEST.php on line 9

    Nach einem kurzen Blick in die DB scheint es so als hätte der User den Link entfernt weil es zu einer Fehlermeldung kam.

    Sollte es nochmals vorkommen, check ich das sofort nochmals und melde es dir in deinem Forum.

    EDIT: Ich denke aber dass es zu keiner abspeicherung in der DB kommt weil die Fehlermeldung vorher ausgeworfen wird bevor der eigentliche Eintrag stattfindet.

    Danke trotzdem für die Hilfe!

    ┌П┐(◉_◉)┌П┐

    Einmal editiert, zuletzt von TeRRible__KHONS (19. Dezember 2020 um 21:21)

  • Manchmal sieht man den Wald vor lauter Bäumen nicht ;)

    Mir ist bei näherer Betrachtung nämlich aufgefallen, dass er nach dem Zeichensatz iso-8895-15 schaut, welches auf der Zielseite im Response-Header angegeben ist:

    Code
    content-type: text/html; charset=iso-8895-15

    Davon abgesehen, dass die Zielseite noch PHP 5.4 nutzt, ist die obige Fehlermeldung korrekt, da der Zeichensatz iso-8859-15 heißt...

    Das Problem sollte in Version 5.3.1 der Erweiterung gelöst sein.

  • Danke der Info, werde das Update morgen wenn daheim installierten, kam zwar bisher zu keinen Fehlermeldungen mehr diesbezüglich aber so sollte es zumindest in Zukunft gelöst sein 😊

    Lag wohl eher an der Zielseite als an allem anderen 👌

    Schöne Feiertage gewünscht.

    ┌П┐(◉_◉)┌П┐

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!