Ответ JSON на запрос формы Laravel: китайский язык не преобразован в UTF

Я не уверен, как мне этого добиться. Мое веб-приложение на английском и китайском языках. На английском работает нормально, а вот когда дело доходит до китайского, начинается бардак.

Прямо сейчас я использую аутентификацию Laravel по умолчанию, и она работает нормально. Проблема в том, что когда я выбираю китайский язык, ответ JSON из класса запроса не преобразуется в UTF, и ответ выглядит примерно так:

{"message":"The given data was invalid.","errors":{"first_name":["\u540d\u5b57\u4e3a\u5fc5\u586b\u9879"],"last_name":["\u5fc5\u987b\u586b\u5199\u59d3\u6c0f"],"email":["\u7535\u5b50\u90ae\u4ef6\u4e3a\u5fc5\u586b\u9879"],"password":[""],"terms_conditions":[""]}}

Я хочу преобразовать этот ответ в строку UTF. Я знаю, что могу сделать это с помощью json_encode.

json_encode($data, JSON_UNESCAPED_UNICODE); 

Класс запроса Laravel генерирует ответ, но я не уверен, как заставить его работать. Функция по умолчанию находится в папке фреймворка Laravel, и я не хочу редактировать эту часть. Если вы когда-либо сталкивались с такой ситуацией, поделитесь, пожалуйста, как вы ее решили.

ПРИМЕЧАНИЕ Мой запрос представляет собой регистрационную форму, но это не обычный HTTP-запрос, а я отправляю форму через вызов Ajax.


person BlackXero    schedule 17.10.2019    source источник


Ответы (1)


После поиска и гугления в течение 5 часов я пришел к этому решению, на самом деле вы можете вернуть ответ из класса FormRequest, переписав эту функцию:

protected function failedValidation(Validator $validator) {
   $data = ['error' => json_encode($validator,JSON_UNESCAPED_UNICODE)];
   throw new HttpResponseException(response($data,422));
}

Убедитесь, что вы также импортируете:

use Illuminate\Http\Exceptions\HttpResponseException;

На вершине своего класса.

person BlackXero    schedule 17.10.2019