Проблема с японским языком при извлечении zipFile с использованием ZipArchive в PHP - PullRequest
0 голосов
/ 08 апреля 2020

У нас есть несколько файлов в zip-файле.

Файл 1: 5_08020083975_sugihara.pdf

Файл 2: 5_08020083975_ ス ギ ハ p .pdf

Когда файл Zip извлекается с помощью ZipArchive в php

Имя файла 2 преобразуется в 5_08020083975_âXâMânâë.pdf вместо 5_08020083975_ ス ギ ハ ラ .pdf

Мы Вы загрузили этот код на Linux сервер

Примечание:

Все (извлечение) работает нормально, кроме преобразования языка. Также проверяется путем установки локали в ja_JP.utf-8

Код, который мы используем:

        $ZipFile = $request->ZipFile;
        $zip_filename = $ZipFile->getClientOriginalName();
        $zip_file_path = public_path() . '/pdf/' . $zip_filename;
        $result = move_uploaded_file($ZipFile, $zip_file_path);
        chmod($zip_file_path, 0775);

        $zip = new \ZipArchive();
        $res = $zip->open($zip_file_path);
        $extract_path=public_path() . '/pdf/'.time().'/';


        if ($res === TRUE) {
          $zip->extractTo($extract_path);
          $zip->close();

          $dir_paths=scandir($extract_path);
          if(isset($dir_paths[2]))
          {
            $extract_paths=public_path() .'/pdf/'.time().'/'.$dir_paths[2].'/';
          }
          else
          {
            $extract_paths=public_path() .'/pdf/'.time().'/';
          }

          $extract_file_name=scandir($extract_paths);
          for ($i=2; $i < count($extract_file_name) ; $i++) { 

          $file_details=explode('_',$extract_file_name[$i]);
          $user_id = $file_details[0];
          $mobile_number = $file_details[1];
          $file_name = $file_details[2];

          rename($extract_paths.$extract_file_name[$i], public_path().'/pdf/'.$extract_file_name[$i]);
               Payslips::create([
                'user_id' => $user_id,
                'mobile_no' => $mobile_number,
                'filename' => explode('.', $file_name)[0],
                'created_at' => date("Y-m-d H:i:s"),
                'updated_at' => date("Y-m-d H:i:s"),
              ]);

           }
           rmdir($extract_paths);
           rmdir($extract_path);
           unlink($zip_file_path);

          return redirect()->back()->with('success', 'アップロードが完了しました。');

        } else {
          return redirect()->back()->withErrors(['Extract Failed!!!']);
        }  

Пожалуйста, дайте мне знать, что нужно добавить, чтобы получить правильный преобразование языка TIA.

...