PHP com_dotnet Dateigrößenbestimmung, Umlaute und UTF8

Shadow1701

Ensign
Registriert
Juli 2012
Beiträge
225
Guten Abend :)

ich bin ein Chaot und habe es mit der Zeichencodierung in meiner mit PHP erstellen Film- und Seriendatenbank nicht so genau genommen. Was immer wieder zu Problemen geführt hat. Anstatt das Problem zu behandeln habe ich die Sympthome behandelt. Nicht gut.

Heute jedenfalls habe ich alles auf UTF8 umgestellt. Die Datenbank und sämtliche Templates. Funktioniert auch alles bzw. ist mir klar wie die noch anstehenden Probleme zu lösen sind, bis auf eine einzige Ausnahme, ich kann die Dateigröße von Dateien welche einen Umlaut enthalten nicht in Erfahrung bringen. Da die Dateien teilweise recht groß sind (.ts Aufnahmen von einem engima2 Receiver) reicht filesize() nicht aus.

Also mache ich es so:
Code:
$filesystem = new COM('Scripting.FileSystemObject');
$file = $filesystem->GetFile($filename);
$size = $file->Size();

Diese drei Zeilen sind die Zeilen 1947,1948 und 1949 in der "functions.php"

Wenn jetzt wie gesagt im Dateinamen $filename ein Umlaut vorkommt, passiert das hier:
Code:
Fatal error: Uncaught com_exception: <b>Source:</b> Unknown<br/><b>Description:</b> Unknown in E:\media2\lib\functions.php:1948 Stack trace: #0 E:\media2\lib\functions.php(1948): com->GetFile('F:\\Media Datenb...') #1 E:\media2\lib\functions.php(1326): fsize('F:\\Media Datenb...') #2 E:\media2\addfiles.php(100): listRecords(218, 'F:\\Media Datenb...', Array, 2, 'local', 1) #3 {main} thrown in E:\media2\lib\functions.php on line 1948

Hier fällt mir nichts ein wie ich das hinbekomme.

Funktioniert hat es, solange in der PHP.ini das hier stand:
Code:
default_charset="iso-8859-1"
jetzt steht hier aber:
Code:
default_charset="UTF-8"
und das soll auch so bleiben da es mehr Probleme löst als schafft.

Wie bekomme ich das hin?

Schönen Samstag Abend euch allen.
Ergänzung ()

Un wiedereinmal kommt die Erleuchtung kurz nachdem ich das Problem niedergeschrieben habe. Und einfach ist es auch noch. :mad:

Das hier funktioniert:
Code:
function fsize($filename) {
    $filename=utf8_decode($filename);
    $filesystem = new COM('Scripting.FileSystemObject');
    $file = $filesystem->GetFile($filename);
    $size = $file->Size();
    return $size;
  }

Es ist einfach schon spät.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: netzgestaltung
aus interesse: wie gross sind deine .ts dateien? habe grade mal filesize() auf eine 14GB datei gemacht und es hat funktioniert.

edit: hab eine 96GB datei gefunden, funktioniert auch :)
 
  • Gefällt mir
Reaktionen: Shadow1701
Sehr interessant. Ich habe es bei einer 72 GB ts Datei mit filesize() versucht. Es funktioniert.

Die Entwicklung meines Projekts hat vor etwa 8 Jahren begonnen. Scheinbar hat sich da was verändert. Hätte es vor 8 Jahren funktioniert, hätte ich mir nicht die Mühe gemacht eine Alternative zu finden.

Mein gestriger Ärger war also doppelt sinnlos :D
 
Zurück
Oben