UTF8 fixed

This commit is contained in:
Simon Pocrnjič 2025-12-18 20:48:11 +01:00
parent 39a597f6eb
commit 11206fb4f7

View File

@ -1983,6 +1983,8 @@ private function upsertActivity(Import $import, array $mapped, $mappings, ?array
} elseif (in_array($field, ['action_id', 'decision_id', 'user_id'], true)) { } elseif (in_array($field, ['action_id', 'decision_id', 'user_id'], true)) {
$normalized = is_null($value) ? null : (int) $value; $normalized = is_null($value) ? null : (int) $value;
} elseif (is_string($normalized)) { } elseif (is_string($normalized)) {
// Clean invalid UTF-8 sequences from string fields
$normalized = mb_convert_encoding($normalized, 'UTF-8', 'UTF-8');
$normalized = trim($normalized); $normalized = trim($normalized);
} }
if (in_array($applyMode, ['both', 'insert'], true)) { if (in_array($applyMode, ['both', 'insert'], true)) {
@ -2539,8 +2541,9 @@ private function safeErrorMessage(string $msg): string
} }
// Fallback strip invalid bytes // Fallback strip invalid bytes
$msg = @iconv('UTF-8', 'UTF-8//IGNORE', $msg) ?: $msg; $msg = @iconv('UTF-8', 'UTF-8//IGNORE', $msg) ?: $msg;
if (strlen($msg) > 500) { // Use mb_strlen and mb_substr for UTF-8 safety
$msg = substr($msg, 0, 497).'...'; if (mb_strlen($msg) > 500) {
$msg = mb_substr($msg, 0, 497).'...';
} }
return $msg; return $msg;
@ -2629,9 +2632,9 @@ private function formatAppliedFieldMessage(string $root, array $fields): string
} else { } else {
$disp = method_exists($v, '__toString') ? (string) $v : gettype($v); $disp = method_exists($v, '__toString') ? (string) $v : gettype($v);
} }
// Truncate very long values for log safety // Truncate very long values for log safety (use mb_substr for UTF-8 safety)
if (strlen($disp) > 60) { if (mb_strlen($disp) > 60) {
$disp = substr($disp, 0, 57).'...'; $disp = mb_substr($disp, 0, 57).'...';
} }
$parts[] = $k.'='.$disp; $parts[] = $k.'='.$disp;
} }