From 44e48c905580b2425d22abb46a76c383e4861bbc Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Wed, 14 Oct 2020 09:59:45 +0200
Subject: [PATCH] fixed invalid UTF-8 characters in json response

---
 app/Http/Controllers/AdminSpamController.php | 7 ++++++-
 app/Http/Controllers/MetaGerSearch.php       | 8 +++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/app/Http/Controllers/AdminSpamController.php b/app/Http/Controllers/AdminSpamController.php
index e4a514ce3..43ccfc0be 100644
--- a/app/Http/Controllers/AdminSpamController.php
+++ b/app/Http/Controllers/AdminSpamController.php
@@ -44,6 +44,9 @@ class AdminSpamController extends Controller
     public function jsonQueries()
     {
         $queries = $this->getQueries();
+        # JSON encoding will fail if invalid UTF-8 Characters are in this string
+        # mb_convert_encoding will remove thise invalid characters for us
+        $queries = mb_convert_encoding($queries, "UTF-8", "UTF-8");
         return response()->json($queries);
     }
 
@@ -77,8 +80,10 @@ class AdminSpamController extends Controller
             ];
         }
 
+        # JSON encoding will fail if invalid UTF-8 Characters are in this string
+        # mb_convert_encoding will remove thise invalid characters for us
+        $resultData = mb_convert_encoding($resultData, "UTF-8", "UTF-8");
         return response()->json($resultData);
-
     }
 
     private function getQueries()
diff --git a/app/Http/Controllers/MetaGerSearch.php b/app/Http/Controllers/MetaGerSearch.php
index afadcafdf..22289cad8 100644
--- a/app/Http/Controllers/MetaGerSearch.php
+++ b/app/Http/Controllers/MetaGerSearch.php
@@ -12,7 +12,6 @@ use View;
 
 class MetaGerSearch extends Controller
 {
-
     public function search(Request $request, MetaGer $metager, $timing = false)
     {
         if ($request->filled("chrome-plugin")) {
@@ -156,7 +155,7 @@ class MetaGerSearch extends Controller
         // This might speed up page view time for users with slow network
         $responseArray = str_split($resultpage->render(), 1024);
         foreach ($responseArray as $responsePart) {
-            echo ($responsePart);
+            echo($responsePart);
             flush();
         }
         $requestTime = microtime(true) - $time;
@@ -182,7 +181,6 @@ class MetaGerSearch extends Controller
         if ($request->filled('loadMore') && $request->filled('script') && $request->input('script') === "yes") {
             return $this->loadMoreJS($request);
         }
-
     }
 
     private function loadMoreJS(Request $request)
@@ -296,6 +294,10 @@ class MetaGerSearch extends Controller
             ],
             "engines" => $metager->getEngines(),
         ], 1 * 60);
+
+        # JSON encoding will fail if invalid UTF-8 Characters are in this string
+        # mb_convert_encoding will remove thise invalid characters for us
+        $result = mb_convert_encoding($result, "UTF-8", "UTF-8");
         return response()->json($result);
     }
 
-- 
GitLab