PHP – Umgang mit UTF-8-Dateinamen beim Hochladen
Beim Umgang mit Uploads, die UTF-8-Dateinamen enthalten, kann es schwierig sein, dies sicherzustellen dass die Charaktere genau erhalten bleiben. Dies ist besonders relevant für Sprachen wie Vietnamesisch, die diakritische Zeichen und nicht-lateinische Zeichen verwenden.
In PHP erfordert der Umgang mit UTF-8-Dateinamen besondere Überlegungen, da Dateisystemfunktionen diese möglicherweise nicht nativ unterstützen. Wie im bereitgestellten Codebeispiel dargestellt:
<code class="php"><?php if(isset($_POST["submit"])) { if($_FILES["upload"]["error"] > 0 ) echo "FILE ERROR!"; else { $base_dir = "D:/"; $fn = $_FILES["upload"]["name"]; $fn2 = $base_dir . $fn; move_uploaded_file($_FILES["upload"]["tmp_name"], $fn2); } } ?></code>
Dieser Code versucht, eine vietnamesisch benannte Datei „Tên Tệp Tiếng Việt.JPG“ hochzuladen. Beim Hochladen wird der resultierende Dateiname auf dem Computer jedoch aufgrund einer falschen Zeichenverarbeitung als „Tên Tệp Tiếng Việt.JPG“ gerendert.
Um dieses Problem zu beheben, ist es so Es ist erforderlich, den Dateinamen in die Codepage des Systems zu konvertieren, bevor er in PHP-Dateisystemfunktionen verarbeitet werden kann. Die Codepage ist eine Einstellung, die die verfügbaren Zeichen im Betriebssystem definiert.
Abhängig von Ihrem spezifischen Betriebssystem und seiner Standardcodepage gibt es zwei mögliche Lösungen:
Option 1: Dateinamenzeichen begrenzen
Dazu gehört die Beschränkung der Zeichen im Dateinamen auf diejenigen, die von der Systemcodepage unterstützt werden, in Ihrem Fall typischerweise ASCII (437). Dies stellt zwar sicher, dass der Dateiname korrekt erhalten bleibt, schränkt jedoch die Verwendung bestimmter vietnamesischer Zeichen ein.
Option 2: Systemcodepage ändern
Dazu ist eine Änderung des Systemcodes erforderlich Stellen Sie die Seite über die Regionaleinstellungen in der Systemsteuerung auf Vietnamesisch (1258) um. Sobald die Änderung vorgenommen wurde, konvertieren Sie den Dateinamen in CP1258, was eine ordnungsgemäße Verarbeitung durch PHP-Dateisystemfunktionen ermöglicht.
<code class="php">$fn2 = iconv("UTF-8","cp1258", $base_dir . $fn);</code>
Durch die Wahl eines dieser Ansätze können Sie sicherstellen, dass vietnamesische UTF-8-Dateinamen korrekt verarbeitet werden beim Hochladen in PHP.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit UTF-8-Dateinamen in PHP für vietnamesische Uploads um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!