У меня была такая же проблема при попытке использовать sk_SK.UTF-8
локаль. Что помогло мне решить проблему, так это удалить часть кода \Carbon\Carbon::setUtf8(true);
.
Но почему это работает так? Во-первых, документация Carbon, касающаяся функции setUtf8, гласит:
Для некоторых языков требуется печать кодировки utf8 (языковые пакеты, в основном, не заканчивающиеся на .UTF8). В этом случае вы можете использовать статический метод Carbon :: setUtf8 () для кодирования результата вызова formatLocalized () в кодировке utf8.
После изучения исходного кода для Carbon функция formatLocalized()
вызывает функцию utf8_encode()
из библиотеки PHP, если мы предварительно установили для переменной utf8 значение true с уже упомянутым Carbon::setUtf8(true)
.
Источник углерода на GitHub
return static::$utf8 ? utf8_encode($formatted) : $formatted;
Поскольку ваша локаль уже настроена на использование стандарта UTF-8, дальнейшее кодирование php портит отформатированную строку.
Я подумал, что если вы хотите использовать Carbon для форматирования ваших строк в utf8, вы должны сначала избавиться от кодировки UTF-8 при настройке локали с помощью setLocale()
. Тем не менее, я хотел бы просто удалить функцию Carbon и использовать правильную локаль.
TL; DR
Используйте правильную локаль с кодировкой UTF-8, например. es_ES.UTF-8
или используйте попытку использовать локаль без кодировки UTF-8 и полагаться на функции \Carbon\Carbon::setUtf8(true);
и utf8_encode()
. Я предлагаю первый вариант. Надеюсь, это помогло:)