mkdir , PHP Ordner kommt mit UTF-8 nicht klar und erkennt keine Umlaute?
Hi und Guten Morgen,
kann mir hierbei jemand helfen?
Ich möchte Ordner/Verzeichnisse auf meinem Server stellten. Soweit klappt das auch. Leider kommt bei den Namen nur Müll raus, sowie Umlaute im Dateinamen sind.
So erstelle ich die Ordner
mkdir('./KundenDateien/'.$primaryKey."_".$vorname."_".$name.'')
Das sollte raus kommen:
fjsgjghdj_Hans_Glück
Das kommt raus
fjsgjghdj_Hans_Glück
Das hier habe ich versucht , bringt aber nichts
header('Content-Type: text/html; charset=utf-8');
Vielen Dank schon mal für eure Tipps
4 Antworten
![](https://images.gutefrage.net/media/user/BurcKeri/1550905608411_nmmslarge__782_187_1467_1467_39b86d68789991ad0a3fd019eaff19bb.jpg?v=1550905608000)
Der Dateityp muss UTF-8 (ohne BOM-Zeichen) sein.
- notepad++ installieren
- deine PHP öffnen, Kodierung->Konvertiere zu UTF8
- dein Glück nochmal neu eintippen
- Speichern und neu ausführen - fertig.
Kodierungen sind meine Leidenschaft :)
![](https://images.gutefrage.net/media/user/BurcKeri/1550905608411_nmmslarge__782_187_1467_1467_39b86d68789991ad0a3fd019eaff19bb.jpg?v=1550905608000)
BOM-Zeichen sind von mir und dir nicht lesbare Zeichen, die im Header einer jeden Textdatei geschrieben werden (können).
Hast du Notepad++ heruntergeladen und installiert? https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.Installer.exe
Danach machst du einen rechtsklick auf deine PHP Datei und wählst "Edit with Notepad++", anschließend folgst du meinem ersten POST :)
![](https://images.gutefrage.net/media/user/MrSchockiert/1483189896406_nmmslarge__0_22_922_922_55e44074979d2e2bc7342ddc00e137c4.png?v=1483189896000)
![](https://images.gutefrage.net/media/user/glebkema/1550522906650_nmmslarge__0_0_200_200_206c5dc1b471eb79da3f219b3ef382b3.jpg?v=1550522907000)
Under Windows, PHP operates as a "non-Unicode aware program", then file names are converted back and forth from the UTF-16 used by the file system (Windows 2000 and later) to the selected "code page".
Option 1. Verwenden Sie die Funktionen urlencode() und urldecode():
Glück -> Gl%C3%BCck -> Glück
Option 2. Oder versuchen Sie es mit PHP 7.1 oder höher:
PHP 7.1 supports UTF-8 filenames on Windows disregarding the OEM codepage.
![](https://images.gutefrage.net/media/user/derFabi95/1444748594_nmmslarge.jpg?v=1444748594000)
Hi,
das liegt daran, dass der Webserver vermutlich auf Linux läuft. Linux unterstützt keine Umlaute. Du hast keine andere Möglichkeit, als ä auf die Ersatzschreibung (ae) zu ändern.
![](https://images.gutefrage.net/media/user/MrSchockiert/1483189896406_nmmslarge__0_22_922_922_55e44074979d2e2bc7342ddc00e137c4.png?v=1483189896000)
![](https://images.gutefrage.net/media/user/derFabi95/1444748594_nmmslarge.jpg?v=1444748594000)
![](https://images.gutefrage.net/media/user/BurcKeri/1550905608411_nmmslarge__782_187_1467_1467_39b86d68789991ad0a3fd019eaff19bb.jpg?v=1550905608000)
![](https://images.gutefrage.net/media/user/BurcKeri/1550905608411_nmmslarge__782_187_1467_1467_39b86d68789991ad0a3fd019eaff19bb.jpg?v=1550905608000)
nein, man kann seine Scripte auch von vornherein dem Ausgangsformat entsprechend anpassen, dann geht das wunderbar. HTMLENTITIES sollten in Deutschland sowieso in Zeiten von UTF-8 nicht nötig sein, sind sie btw auch nicht.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Das header bezieht sich auf den Browser, das mkdir auf das Filesystem deines Servers.
Als erstes fällt mir (vor dem ersten Kaffee ;) ein: probiere mal ein utf8_encode($name) bzw. utf8_decode($name) und prüfe das jeweilige Ergebnis.
oha... jetzt nochmals für mich ;-)
was meinst du mit BOM-Zeichen?
Kannst du mir vieleicht ein Beispiel zeigen?