Ich habe eine Datei mit Unicode-Zeichen auf einem Server mit Linux. Wenn ich SSH auf dem Server anwende und Tabulatorvervollständigung verwende, um zu der Datei/dem Ordner zu navigieren, der Unicode-Zeichen enthält, habe ich kein Problem, auf die Datei/den Ordner zuzugreifen. Das Problem tritt auf, wenn ich versuche, über PHP auf die Datei zuzugreifen (die Funktion, von der aus ich auf das Dateisystem zugreift, war stat
). Wenn ich den vom PHP-Skript generierten Pfad zum Browser austrage und in das Terminal einfüge, scheint die Datei ebenfalls zu existieren (obwohl die Dateipfade beim Blick auf das Terminal genau gleich sind).UTF8 Dateinamen in PHP und verschiedene Unicode-Kodierungen
I gesetzt PHP UTF8 als Standard-Kodierung über php_ini sowie mb_internal_encoding
Set zu verwenden. Ich habe die Kodierung der PHP-Dateipfadzeichenfolge überprüft und sie kommt wie UTF8 heraus. Stochert ein bisschen mehr ich hexdump
den é Charakter entschieden, dass das Terminal Tab-Vervollständigung und vergleichen Sie es mit den hexdump
des ‚normalen‘ é Charakter durch das PHP-Skript erstellt oder von im Zeichen über die Tastatur (Option + e manuelle Eingabe + e auf os x). Hier ist das Ergebnis:
echo -n é | hexdump 0000000 cc65 0081 0000003 echo -n é | hexdump 0000000 a9c3 0000002
Die é Zeichen, das eine korrekte Dateireferenz in dem Endgerät ermöglicht, ist der 3-Byte ein. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll, welche Kodierung sollte ich in PHP verwenden? Sollte ich den Pfad zu einer anderen Kodierung über oder mb_convert_encoding
konvertieren?