Hallo Tom,
herzlichen Dank das du nochmals in diesen Thread schaust. Ich drehe mich nämlich im Kreise und google und komme dennoch nicht weiter :-)
Den in utf-8 übertragenen Dateinamen musst Du dann vor dem Speichern unter NTFS nach utf-16 übersetzen. Dann sollte es klappen. Ich bitte um Rückmeldung.
Was ich jetzt bisher versucht habe:
Ich habe mal zum testen mein ganzes utf8_decode und utf8_encode rausgenommen.
In der Webseite steht jetzt also nur noch:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1. Ich wähle die Datei "Das+ist~mit@sönderZüchenß&.ps" vom Windows Dateisystem und lade sie in der Webanwendung hoch. Anzeige im Browser = sauber und leserlich als genauso wie im Dateisystem. Aber im Filesystem ist sie jetzt wie im Beispielbild oben. OK, erst mal ignorieren.
2. Es werden noch ein paar Angaben im Webformular gemacht, dann Submit. Dateiinfos werden in einer DB gespeichert und die Datei wird umkopiert für weitere Verwendung.
copy("$userupload/$new_name", "$ziel_dir/$new_name")
Jetzt mache ich zum Schluss ein Rename:
$new_name_decode = utf8_decode($new_name);
rename("$ziel_dir/$new_name" , "$ziel_dir/$new_name_decode");
So wäre der gesamte Workflow ok. Also Anzeige im Browser ok. Speicherung in der DB ok und Anzeige im Windows Dateisystem auch wieder ok und leserlich mit Umlauten und Sonderzeichen.
Das funktioniert nun so für alle "normalen" Dateien die auf dem Windows System erstellt wurden.
ABER, jetzt kommt wieder das Problem mit dieser MAC Datei und dem ü als
0075 LATIN SMALL LETTER U
0308 COMBINING DIAERESIS
Bei dieser Datei sieht das auf dem Dateisystem dann so aus:
Hier greift dann das rename mit vorherigem utf8_decode nicht. Es kommt zu "No such file or directory .. Eng_fu?r_ProjVA_2014.pdf".
Und jetzt bin ich an dem Punkt wo ich nicht weiterkomme.
Was meintest du mit UTF16 umwandeln. So etwas in der Art?
$file_name = mb_convert_encoding($_FILES['fileuploads']['name'][$i],'utf-16');
vielen Dank und viele Grüße
hawk