принудительная кодировка для работы по запросу, сделанному для laravel API через веб-браузер - PullRequest
0 голосов
/ 27 марта 2020

Я обслуживаю API, у которого есть requests, сделанный front-end app. Когда я звоню с номера postman, все работает хорошо, включая encoding. response:

{ "message": "Esse nome de usuário está disponível" }

Однако, когда я делаю это из browser, я получаю:

{"message":"Esse nome de usu\u00e1rio est\u00e1 dispon\u00edvel"}

Я уже сделал этот учебник, который создает middleware форсирование encoding, и в моем проекте я установил его так, в отличие от кода, который он предлагает:

$request->headers->set('Accept', 'application/json; charset=UTF-8');
$request->headers->set('Charset', 'utf-8');

В postman, я видел, что эти headers не были установлены в response из request.

Также я уже пытался установить в своем ответе controller:

return response()->json([
                'message' => __('auth.nickname_available'), 
            ], 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8']);

Я следовал этому совету. Но ни одна из них не сработала.

Как я могу сделать эту работу хорошо?

1 Ответ

1 голос
/ 27 марта 2020

Правильно ли вы пробовали это решение? У меня работает следующее:

return response()->json(
    [
        'Message' => 'Esse nome de usuário está disponível',
    ],
    200,
    ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
    JSON_UNESCAPED_UNICODE
);

В ответе на свой вопрос вы забыли добавить JSON_UNESCAPED_UNICODE

...