Tôi đang sử dụng Laravel (một khuôn khổ PHP) để viết dịch vụ cho thiết bị di động và có dữ liệu được trả về ở định dạng JSON
. Trong kết quả dữ liệu có một số trường được mã hóa trong UTF-8
.'Các ký tự UTF-8 không đúng định dạng, có thể được mã hóa không chính xác' trong Laravel
Tuyên bố sau
return JsonResponse::create($data);
trả về lỗi dưới đây
InvalidArgumentException
HELP
Malformed UTF-8 characters, possibly incorrectly encoded
Open: /var/www/html/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/JsonResponse.php
} catch (\Exception $exception) {
restore_error_handler();
throw $exception;
}
if (JSON_ERROR_NONE !== json_last_error()) {
throw new \InvalidArgumentException($this->transformJsonError());
}
Tôi đã thay đổi:
return JsonResponse::create($data);
để
return JsonResponse::create($data, 200, array('Content-Type'=>'application/json; charset=utf-8'));
nhưng vẫn không hoạt động.
Làm cách nào để khắc phục sự cố?
'$ data' là gì? Nó đến từ đâu, có gì trong đó, làm thế nào để bạn biết nó được mã hóa UTF-8? – deceze
$ data là dữ liệu mảng từ cơ sở dữ liệu. Tôi đã kiểm tra dữ liệu $, nó có một chuỗi "兆 琪" => lỗi khi trả về json. –
Nó cố định, đó là lỗi của tôi. Có mã hàng không tốt: chất nền ('兆 琪', ...) Cảm ơn! –