искаженные символы utf-8, возможно, неправильно закодированные

#php #laravel #encoding #utf-8

#php #laravel #кодирование #utf-8

Вопрос:

Я закодировал изображение в base64 в iOS и отправил его на сервер, а затем использовал base64_decode() в этой строке. Но это выдает ошибку

искаженные символы utf-8, возможно, неправильно закодированные

я делаю это в laravel и использую основную функцию php;

 public function createIdea(Request $request) {
   $filename = str_random(8);
   $imageStr = $request->input('idea_image');
   $decodeImage = base64_decode($imageStr);
   $image = imagecreatefromstring($decodeImage);
     if ($request->hasFile($image)) {
          $filename = $request->file($image)->getClientOriginalName();
          $moveImage = $request->file($image)->move('images', $filename);
     }
   $idea = new Idea();
   $idea->idea_title = $request->input('idea_title');
   $idea->idea_info = $request->input('idea_info');
   $idea->idea_image = "images/".$filename;
   $idea->idea_location = $request->input('idea_location');
   $idea->idea_description = $request->input('idea_description');
   $idea->idea_description = $request->input('selection');
   $idea->user_id = Auth::id();
   $idea->save();
   $ideaId = $idea->id;
     if ( ! $idea->id ) {
          $statusCode =404;
          response()->json(array('Status:' => 'Idea Creation FAILED'),$statusCode);
    }else{
          $response = $idea->toJson();
          $statusCode =200;
          return response()->json(array('Status:' => 'Idea Created Successfully', 'ideaId' => $ideaId, 'image' => $imageStr),$statusCode);
}
  

Любая помощь будет оценена.

Комментарии:

1. как кодированная строка отправляется на сервер?

2. через POST request мобильное приложение.

3. но как собираются данные для запроса post? Возможно, перед отправкой выполняется какое-то кодирование.

Ответ №1:

Кодирование большого двоичного объекта в base64 перед отправкой данных на любом языке позволит вам передавать данные большого двоичного объекта в виде безопасных строк!

Комментарии:

1. Именно так. Если вы попытаетесь отправить данные изображения в виде необработанных байтов и в заголовке будет указано, что содержимое «UTF-8», браузер попытается вам поверить … за исключением того, что данные, которые вы отправляете, в конце концов, не являются UTF-8! Таким образом, стандартная практика заключается в использовании кодировки base64, которая преобразует двоичные данные в поток символов (UTF-8 …), сохраняя 6 бит данных на символ, следовательно, «база 64».