Heim >Backend-Entwicklung >PHP-Tutorial >PHP erkennt die Pfadkodierung des Systemordners durch eine Problemumgehung
Kürzlich habe ich eine Web-FTP-Plattform geschrieben, die FTP über PHP ähnelt.
Sie muss mit dem Pfadzugriff von Linux und Windows kompatibel sein.
Während des Prozesses habe ich festgestellt, dass die Pfadcodierung von Windows und Linux verwendet wird ist anders. Linux scheint beispielsweise utf-8 zu sein, aber window ist gbk; Wenn der Pfad chinesische Zeichen enthält, verwenden Sie die utf-8-Codierung, um auf den Pfad zuzugreifen. und fs-Methoden wie file_exists sind nicht zugänglich. Da der Pfad nicht vorhanden ist, liegt der Grund darin, dass beim Parsen der Pfadcodierung gemäß dem GBK-Format ein Fehler auftritt Pfad existiert nicht;
Zu diesem Zeitpunkt habe ich die Kodierung des aktuellen Systems automatisch erkannt.
Ich habe bei Google gesucht und keine wirksame integrierte PHP-Methode zum Erkennen der Systemkodierung gefunden.
Nachdem ich darüber nachgedacht habe Eine Zeit lang habe ich die folgende Lösung verwendet, um es zu lösen: Derzeit ist das Testen unter Linux und Windows korrekt.
```php
// UTF8-Kodierung in die aktuelle Systemkodierung konvertieren
protected; statische Funktion _toOsCode($str, $coding = null) {
$enc = 'UTF-8';
vert_encoding($str , $coding, $enc); Unterschiedliche Codierungserkennung, wenn Sie die Datei lesen können , es bedeutet, dass die Kodierung korrekt ist
protected static function _detectOsCode() {
$codingFile = '/coding-encoding-os-path.html';
$detectPath = __DIR__ .$codingFile;
byte4le |UCS-4|UCS-4BE|UCS-4LE|UCS-2|UCS-2BE|UCS-2LE|UTF-32|UTF-32BE|UTF-32LE|UTF-16|UTF-16BE|UTF-16LE| ' , '|'.$coding.'|')) {//Einige Codierungen werden in illegale Pfade konvertiert, daher besteht keine Notwendigkeit,
continue; :_toOsCode($detectPath, $coding);
der Name der Systempfaddatei (Ordner): einer der möglichen Der Grund dafür ist, dass die Datei „.$codingFile.“ gelöscht wurde oder nicht vorhanden ist. Leseberechtigung“, 500);
Das Obige stellt vor, wie PHP die Ordnerpfadkodierung des Systems durch Problemumgehungen erkennt, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.