Magento 2: Как определить, какая конфигурация вызывает ошибку «Неправильные символы UTF-8, возможно, неправильно закодированы» при попытке сериализации конфигурации проверки - PullRequest
0 голосов
/ 03 марта 2020

Я на Магнето 2.3.4. В vendor/magento/module-checkout/view/frontend/templates/onepage.phtml есть строка, подобная этой:

        window.checkoutConfig = <?= /* @noEscape */ $block->getSerializedCheckoutConfig() ?>;

После функции она сводится к vendor/magento/module-checkout/Block/Onepage.php::getSerializedCheckoutConfig()

И функция сериализации находится в vendor/magento/framework/Serialize/Serializer/JsonHexTag.php

Я добавил json_last_error_msg() к сообщению об исключении, и в основном это сообщение об ошибке теперь:

Exception #0 (InvalidArgumentException): 
Unable to serialize value. Error:Malformed UTF-8 characters, possibly incorrectly encoded

Как быстро найти значение конфигурации ключа или ключ, имеющий некорректные символы UTF-8? Или как быстро это исправить в базе данных?

1 Ответ

0 голосов
/ 05 марта 2020

Мне удалось отладить и найти проблемный символ c благодаря предложению Magento StackExchange.

https://magento.stackexchange.com/questions/305931/magento-2-how-to-find-which-config-causing-error-malformed-utf-8-characters-p

В основном с помощью XDebug для отладки ключ и значение обрабатываются с использованием проверки utf8:

mb_detect_encoding($suspiciousString, 'UTF-8', true)

Оказалось, что неправильный ключ шифрования, который у меня был, расшифровал некоторые учетные данные в неправильно сформированные символы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...