From 11206fb4f763d54815be8564669629f3e347dc5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Thu, 18 Dec 2025 20:48:11 +0100 Subject: [PATCH] UTF8 fixed --- app/Services/ImportProcessor.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/Services/ImportProcessor.php b/app/Services/ImportProcessor.php index 7d4f07c..f322245 100644 --- a/app/Services/ImportProcessor.php +++ b/app/Services/ImportProcessor.php @@ -1983,6 +1983,8 @@ private function upsertActivity(Import $import, array $mapped, $mappings, ?array } elseif (in_array($field, ['action_id', 'decision_id', 'user_id'], true)) { $normalized = is_null($value) ? null : (int) $value; } elseif (is_string($normalized)) { + // Clean invalid UTF-8 sequences from string fields + $normalized = mb_convert_encoding($normalized, 'UTF-8', 'UTF-8'); $normalized = trim($normalized); } if (in_array($applyMode, ['both', 'insert'], true)) { @@ -2539,8 +2541,9 @@ private function safeErrorMessage(string $msg): string } // Fallback strip invalid bytes $msg = @iconv('UTF-8', 'UTF-8//IGNORE', $msg) ?: $msg; - if (strlen($msg) > 500) { - $msg = substr($msg, 0, 497).'...'; + // Use mb_strlen and mb_substr for UTF-8 safety + if (mb_strlen($msg) > 500) { + $msg = mb_substr($msg, 0, 497).'...'; } return $msg; @@ -2629,9 +2632,9 @@ private function formatAppliedFieldMessage(string $root, array $fields): string } else { $disp = method_exists($v, '__toString') ? (string) $v : gettype($v); } - // Truncate very long values for log safety - if (strlen($disp) > 60) { - $disp = substr($disp, 0, 57).'...'; + // Truncate very long values for log safety (use mb_substr for UTF-8 safety) + if (mb_strlen($disp) > 60) { + $disp = mb_substr($disp, 0, 57).'...'; } $parts[] = $k.'='.$disp; }