XF 2.2 Проблема с кодировкой при вставке ссылки на видео из YouTube

Версия XenForo
2.2.15

alex_tv

Проверенные
Сообщения
37
Реакции
10
Баллы
8,110
При вставке в сообщение просто ссылки вроде https://www.youtube.com/watch?v=0hoXiUJAy7w
на Youtube ролик у которого описание и заголовок кириллицей, имеем проблему с искажением кодировки заголовка и описания ролика :

1.in_message.PNG

При этом ролик в BB кодах вставлятеся так :
[URL unfurl="true"]https://www.youtube.com/watch?v=0hoXiUJAy7w[/URL]

В настройках форума /admin.php?options/groups/mediaEmbedding/
включено "Не преобразовывать медиа автоматически"
а в настройках /admin.php?options/groups/messageOptions
включено "Автоматически "разворачивать" ссылки для предварительного просмотра их содержимого"


Однако, в инструменте админки "Тест предпросмотра URL" /admin.php?tools/test-url-unfurling
ситуация интереснее :
2.in_test-tool.PNG
Заголовок и Описание в основном поле искажены, но ниже, в "Raw response" все читабельно.

В других проблем с кодировкой нет и не было. Было ли это в более ранних версих форума не могу сказать - не замечал.

Понятно, что можно перейти в другой режим обработки ссылок, преобразовывать медиа, или не разворачивать ссылки, чтоб не было превью, но хочется разобраться, найти причину.

Да, nginx/1.25.4 + PHP 8.2.16 в FPM режиме, и в них прописаны соответственно настройки кодировок.
charset utf-8; и default_charset = "UTF-8"
а в Mysql (Percona 5.7.44) прописано
Код:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake

Может кто сталкивался ? Где искать источник проблемы искажения ?
 
так как на 2.3 такой проблемы нет, скорее всего следующая 2.3 будет
А на 2.3 сразу перепрыгнуть не получится в плане модов?
Фикс работает, единственно при проверке конечно же ругается на этот правленый файл
По уму надо пересчитать хеш этого правленого файла.Я увы не знаю как это сделать,знаю только как пересчитывать правленые моды
Пока закомментировал проверку этого файла в hashes.json строка 2411
Если кто то подскажет как пересчитать правильно этот файл буду премного благодарен
 
It Works, на 2.3 основное отличие будет в том что упадут плагины которые используют jQuery, потому надо не прыгать сразу а привести свой форум к новым реалиям.
 
Да, правка /src/XF/Http/Metadata.php по
решила проблему

А хеш пересчитать несложно, например так
cat src/XF/Http/Metadata.php | tr -d '\r'| sha256sum
 
Я сделал
/src/vendor/symfony/dom-crawler/Crawler.php
строка 196
$content = htmlspecialchars_decode(htmlentities($content, ENT_COMPAT, 'UTF-8'), ENT_QUOTES);
строка 204
@$dom->loadHTML(mb_encode_numericentity($content, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
 
Я сделал
/src/vendor/symfony/dom-crawler/Crawler.php
строка 196
$content = htmlspecialchars_decode(htmlentities($content, ENT_COMPAT, 'UTF-8'), ENT_QUOTES);
строка 204
@$dom->loadHTML(mb_encode_numericentity($content, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
После таких действий сыпятся ошибки. Вернул как было.
 
Отредактировал первую строчку тончей поменял
ParseError: Unclosed '{' on line 194 does not match ')' src/vendor/symfony/dom-crawler/Crawler.php:197
Сгенерирована пользователем: неважно 13 Май 2024 в 23:42

Трассировка стека
#0 src/vendor/composer/ClassLoader.php(427): Composer\Autoload\{closure}('/home/blv42/bas...')
#1 src/XF/Http/Metadata.php(303): Composer\Autoload\ClassLoader->loadClass('Symfony\\Compone...')
#2 src/XF/Http/Metadata.php(120): XF\Http\Metadata->getXPathMetaByAttr(Array)
#3 src/XF/Service/Unfurl/Fetcher.php(30): XF\Http\Metadata->getTitle()
#4 unfurl.php(71): XF\Service\Unfurl\Fetcher->fetch()
#5 {main}

Содержимое запроса

array(4) {
["url"] => string(11) "/unfurl.php"
["referrer"] => string(49) "пьапоаынлоак"
["_GET"] => array(0) {
}
["_POST"] => array(4) {
["result_ids"] => array(1) {
[0] => string(1) "4"
}
["_xfRequestUri"] => string(24) "/threads/papoaynloak.36/"
["_xfWithData"] => string(1) "1"
["_xfToken"] => string(8) "********"
}
}
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу