Hello,
Bei einer Testdatei - für.pdf - mit dem "normalisierten" ü vom MAC wird mir mit Tom's hex Funktion folgendes ausgegeben.
66 75 cc 88 72 2e 70 64 66
also praktisch für das ü den Hexcode 75 cc 88
Vielleicht könnte man auf diese Weise vorher prüfen, wie eine Datei kodiert ist und dann entsprechend weiter behandeln?
Das haben wir schon mal ziemlich ausführlich behandelt. Such mal nach
"category:php is_utf8" oder
"category:php isutf8" oder
im Archiv. kann aber schon 2006 aufwärts gewesen sein...
Die Funktion stellt fest, ob der vorliegende Stream in utf-8 codiert sein kann, bzw. ob es bei der Interpretation keine Fehler gibt und gibt die max. Anzahl der verwendeten Oktetten pro Zeichen an. Das lässt auch gewisse Rückschlüsse zu.
Sicher ist da natürlich nichts so wirklich. Aber das geht aus den Threads zum Thema auch hervor.
Auch auf die Gefahr, dass ich nerve:
Der Wert aus $_FILES[$fileupload]['name'][$i] darf man NIEMALS NIE NICHT direkt als Dateinamen verwenden!
Da gehört mindestens ein
$filename = basename($_FILES[$fileupload]['name'][$i]);
drum herum.
Und außerdem kannst Du dein ganzes Problem beseitigen, wenn Du dich entschließt, den Dateinamen aus $filename = basename($_FILES[$fileupload]['name'][$i]) in eine Datenbank zu schreiben und die Datei dann "$id.$extension" nennst.
Eine Extension ermittelst Du aus dem realen MIMEType, den Du auch erst auf dem Server ermittelst.
Schau die mal den Artikel im Wiki dazu an. Ist noch nicht fertig, aber das wichtigste steht drin!
http://wiki.selfhtml.org/wiki/Artikel:PHP/File_Upload
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg