-
Umlaute im Dateisystem
Ich weiß, ich nerve, aber ich bin echt verzweifelt.
Bei einem meiner Projekte kriege ich die Probleme mit den Umlauten einfach nicht in den Griff.
Natürlich weiß ich, dass ich keine Umlaute verwenden soll, aber die Kunden wissen das halt nicht…
Contao ist laut Check-Tool einwandfrei installiert. Es läuft PHP 5.4 (unter 5.3 sind die Probleme aber die gleichen)
Die Webseite läuft an sich einwandfrei bis auf das folgende Problem:
Wenn der Kunde eine Datei mit einem Umlaut im Namen (meistens PDF) per FTP hochlädt und anschließend synchronisiert wird die Datei zwar entdeckt, aber nicht korrekt in die DB aufgenommen.
Es kommt der Hinweis Die Datei bzw. der Ordner "" wurde hinzugefügt
Der Dateiname wird nur bis zum ersten Umlaut gelesen und angezeigt.
Wenn man anschließend in der Dateiverwaltung nachsieht wird die Datei in der Übersicht namenlos angezeigt.
Dubioserweise kann man die Datei aber von dort korrekt anzeigen und auch downloaden.
Ich habe alles, was ich finden konnte auf UTF-8 umgestellt, die Datenbank-Kollation ist utf-8-general.
Das Projekt läuft auf einem V-Server bei 1und1. Das möchte der Kunde so…
Hat irgendjemand einen Tipp für mich?
Ich weiß, nicht mehr weiter. Leider kann ich dem Kunden das FTP-Uploaden nicht austreiben.
Vielen Dank
der Patrick
-
In Contao 3.5.x ist da wohl was gemacht worden in der Richtung
https://github.com/contao/core/pull/7852
Ansonsten musst du wohl deine Bemühungen darauf ausdehnen, dem Kunden vernünftige Dateinamen näher zu bringen.
-
Dateien mit Umlauten liefen bei mir aber auch schon vor 3.5 ohne Probleme. Auch viele meiner Kunden sind da etwas "beratunsresistent" was Dateinamen im Web betrifft :D
-
Ist das ein V-Server mit Root-Zugriff? Sind auch die richtigen locales konfiguriert?
Was sagt locales auf der Shell?
-
locales
Ich hatte ja schon Hoffnung, aber …
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
das sieht doch eigentlich gut aus.
-
gelöst
obwohl mir diesmal keiner aus dem Forum helfen konnte, habe ich das Problem gelöst.
Und weil ich mir vorstellen kann, dass dieses Problem bestimmt noch bei anderen Usern auftreten könnte will ich die Lösung gerne mit Euch teilen.
Das Problem lag in der FTP-Übertragung!
Leider ließ sich per Einstellung am FTP-Client nichts bewerkstelligen, wohl aber in den Einstellungen des FTP-Servers.
Auf den 1&1 V-Servern läuft der ProFTPD der zwar mit Spracheinstellungen klarkommt, aber standardmäßig keine Codierungseinstellungen hat.
Wenn also das gesamte System unter UTF-8 laufen soll, muss man das dem ProFTPD auch mitteilen.
Das habe ich mithilfe eines Eintrags in der proftpd.conf bewerkstelligt:
<IfModule mod_lang.c>
UseEncoding utf8
</IfModule>
Das wars schon. Jetzt werden die Umlaute korrekt übertragen und auch von allen anderen Server-Komponenten verstanden.
Und so klappt auch die Synchronisierung einwandfrei.