/** * Multer liefert `originalname` je nach Version als latin1-gelesene Bytes: ein * UTF-8-Dateiname wie "Käse.xlsx" kommt als "Käse.xlsx" an. Diese Funktion * kehrt das um, ohne einen schon richtigen Namen zu zerstoeren: ist der Name * nicht aus latin1-Zeichen zusammengesetzt (Zeichen > 255) oder ergibt die * Umkehrung kein gueltiges UTF-8, bleibt er unveraendert. */ export function decodeUploadFilename(name: string): string { for (let i = 0; i < name.length; i++) { if (name.charCodeAt(i) > 255) return name; } const converted = Buffer.from(name, 'latin1').toString('utf8'); return converted.includes('�') ? name : converted; }