Ответ на запрос формы Laravel JSON: Китайский язык не преобразован в UTF - PullRequest
0 голосов
/ 17 октября 2019

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

Сейчас я использую аутентификацию по умолчанию 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.

1 Ответ

0 голосов
/ 17 октября 2019

После поиска и поиска в течение 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;

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

...