From 44f6cf89282ceacd3f751b60fa474b3692f9c6db Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 14 Feb 2026 10:33:35 -0500 Subject: [PATCH] Fix UTF double encoding in file editor (#2199) --- app/Filament/Server/Resources/Files/Pages/EditFiles.php | 6 +++++- app/Http/Controllers/Api/Client/Servers/FileController.php | 2 +- app/Repositories/Daemon/DaemonFileRepository.php | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Filament/Server/Resources/Files/Pages/EditFiles.php b/app/Filament/Server/Resources/Files/Pages/EditFiles.php index a3108b7c7..3596e75f5 100644 --- a/app/Filament/Server/Resources/Files/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/EditFiles.php @@ -149,7 +149,11 @@ class EditFiles extends Page try { $contents = $this->getDaemonFileRepository()->getContent($this->path, config('panel.files.max_edit_size')); - return mb_convert_encoding($contents, 'UTF-8', ['UTF-8', 'UTF-16', 'ISO-8859-1', 'ASCII']); + if (mb_check_encoding($contents, 'UTF-8')) { + return $contents; + } + + return mb_convert_encoding($contents, 'UTF-8', 'ISO-8859-1'); } catch (FileSizeTooLargeException) { AlertBanner::make('file_too_large') ->title(trans('server/file.alerts.file_too_large.title', ['name' => basename($this->path)])) diff --git a/app/Http/Controllers/Api/Client/Servers/FileController.php b/app/Http/Controllers/Api/Client/Servers/FileController.php index f9da65caa..a25d0ba2b 100644 --- a/app/Http/Controllers/Api/Client/Servers/FileController.php +++ b/app/Http/Controllers/Api/Client/Servers/FileController.php @@ -77,7 +77,7 @@ class FileController extends ClientApiController ->property('file', $request->get('file')) ->log(); - return new Response($response, Response::HTTP_OK, ['Content-Type' => 'text/plain']); + return new Response($response, Response::HTTP_OK, ['Content-Type' => 'text/plain; charset=utf-8']); } /** diff --git a/app/Repositories/Daemon/DaemonFileRepository.php b/app/Repositories/Daemon/DaemonFileRepository.php index 650d8447a..d7366ea6d 100644 --- a/app/Repositories/Daemon/DaemonFileRepository.php +++ b/app/Repositories/Daemon/DaemonFileRepository.php @@ -53,7 +53,7 @@ class DaemonFileRepository extends DaemonRepository { $response = $this->getHttpClient() ->withQueryParameters(['file' => $path]) - ->withBody($content) + ->withBody($content, 'text/plain') ->post("/api/servers/{$this->server->uuid}/files/write"); if ($response->status() === 400) {