PHP – Umgang mit UTF-8-Dateinamen unter Windows
Problembeschreibung
Das Hochladen von Dateien mit UTF-8-codierten Dateinamen führt unter Windows zu verzerrten Zeichen.
Vorgeschlagene Lösung
Der ursprüngliche Vorschlag zur Lösung dieses Problems beinhaltete die Verwendung der iconv()-Funktion, um den Dateinamen in eine Codepage zu konvertieren, die mit dem Windows-System kompatibel ist, wie z. B. CP1258. Allerdings weist dieser Ansatz Einschränkungen auf.
Aktualisierte Lösung
In Wirklichkeit können PHP-Dateisystemfunktionen nur Zeichen verarbeiten, die sich innerhalb der aktiven Codepage des Systems befinden. Daher ergeben sich zwei mögliche Lösungen:
Option 1:
- Dateinamenzeichen auf die Codepage des Systems beschränken (z. B. CP437 in Ihrem Fall)
- Diese Option schränkt die Verwendung vietnamesischer Zeichen ein.
Option 2:
- Ändern Sie die Codepage des Systems auf Vietnamesisch (z. B. CP1258). )
- Konvertieren Sie den Dateinamen in die neue Codepage (z. B. $fn2 = iconv("UTF-8","cp1258", $base_dir.$fn);)
- Diese Option auch beschränkt Dateinamenzeichen auf die vietnamesische Codepage 1258.
Nachteile beider Optionen:
-
Option 1: Unfähigkeit Bestimmte vietnamesische Zeichen verwenden
-
Option 2: Anforderung zum Ändern der Systemcodepage und Einschränkungen für Dateinamenzeichen
Zusätzliche Informationen zum Ändern der Systemcodepage
So ändern Sie die Codepage des Systems:
- Navigieren Sie zu Systemsteuerung > Region
- Wählen Sie die Registerkarte „Verwaltung“ aus
- Klicken Sie unter „Sprache für Nicht-Unicode-Programme“ auf die Schaltfläche „Systemgebietsschema ändern“
- Wählen Sie „Vietnamesisch (Vietnam)“ aus dem Dropdown-Menü
Das obige ist der detaillierte Inhalt vonWie kann ich UTF-8-Dateinamen in PHP unter Windows verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!