diff --git a/app/Http/Controllers/ImportController.php b/app/Http/Controllers/ImportController.php index 0bcbabde60b7..c8aa9c70dbdf 100644 --- a/app/Http/Controllers/ImportController.php +++ b/app/Http/Controllers/ImportController.php @@ -81,7 +81,8 @@ class ImportController extends Controller /** @var UploadedFile $file */ foreach ($request->files->get('files') as $entityType => $file) { $contents = file_get_contents($file->getPathname()); - // $contents = mb_convert_encoding($contents, 'UTF-16LE', 'UTF-8'); + + $contents = $this->convertEncoding($contents); // Store the csv in cache with an expiry of 10 minutes Cache::put($hash.'-'.$entityType, base64_encode($contents), 600); @@ -97,11 +98,21 @@ class ImportController extends Controller ]; } - $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8'); - return response()->json($data); } + private function convertEncoding($data) + { + + $enc = mb_detect_encoding($data, mb_list_encodings(), true); + + if($enc !== false) { + $data = mb_convert_encoding($data, "UTF-8", $enc); + } + + return $data; + } + public function import(ImportRequest $request) { $data = $request->all(); diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php index 0019a6efed40..04780c6fc2ea 100644 --- a/app/Import/Providers/BaseImport.php +++ b/app/Import/Providers/BaseImport.php @@ -102,6 +102,8 @@ class BaseImport } $csv = base64_decode($base64_encoded_csv); + $csv = mb_convert_encoding($csv, 'UTF-8', 'UTF-8'); + nlog($csv); $csv = Reader::createFromString($csv); $csvdelimiter = self::detectDelimiter($csv); @@ -765,8 +767,7 @@ class BaseImport { $keys = array_shift($data); ksort($keys); -// nlog($data); -// nlog($keys); + return array_map(function ($values) use ($keys) { return array_combine($keys, $values); }, $data);