"message": "Malformed UTF-8 characters, possibly incorrectly encoded",
это мой настоящий идентификатор с типом uuid в БД:
944CC79D-5980-4587-8A52-000A2F11D7D1
это uuid при попытке получить его с помощью php artisan Tinker:
b"ØÃLöÇYçEèR\0\n/\x11ÎÐ"
Почему это происходит? Я выполнил приведение к строке/uuid в моделях, очистил кеш, но не сработало.
моя среда:
- mac os, tahoe 26.1 ver
- php 8.4 отредактировано: я понизил версию до php 8.2, но uuid все равно неверный.
- laravel 11
- БД с использованием сервера sql
Я хочу, чтобы uuid был передан правильно. не b"ØÃLöÇYçEèR\0\n/\x11ÎÐ"
редактировать:
вот консоль php artisan
просто и обычно. судя по всему, все uuid стали деформированными. не только для пользователей
php artisan tinker
Psy Shell v0.12.7 (PHP 8.2.29 — cli) by Justin Hileman
> User::first()
[!] Aliasing 'User' to 'App\Models\User' for this Tinker session.
= App\Models\User {#6624
id: b"ØÃLöÇYçEèR\0\n/\x11ÎÐ",
//rest of the data
Я передал эту проблему ИИ, и вот что сказал ИИ:
The root cause is most likely due to the difference in default encoding between Windows and macOS.
On Windows, many files, input, and CLI data are stored in ANSI/Windows-1252, while on macOS, the default encoding is UTF-8.
When Laravel on Mac tries to encode JSON, it encounters data that is still in Windows-1252 or ISO-8859 format and immediately throws an error:
Malformed UTF-8 characters, possibly incorrectly encoded
On Windows, there's no error because PHP on Windows automatically accepts Windows-1252, which is more permissive.
но потом предлагаю кастинг на модель. Я уже это сделал, но это не решило проблему.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
вот приведения:
protected $casts = [
'email_verified_at' => 'datetime',
];
вот пользователи DESC с этим идентификатором
Column_name |Type |Computed|Length|Prec |Scale|Nullable|TrimTrailingBlanks|FixedLenNullInSource|Collation
id |uniqueidentifier|no | 16| | |no |(n/a) |(n/a) | |
Подробнее здесь: https://stackoverflow.com/questions/798 ... ver-on-mac
Мобильная версия