{"id":759,"date":"2014-09-09T14:03:30","date_gmt":"2014-09-09T12:03:30","guid":{"rendered":"https:\/\/vielhuber.de\/?p=759"},"modified":"2017-03-25T23:07:13","modified_gmt":"2017-03-25T22:07:13","slug":"php-zugriff-auf-dateinamen-mit-umlauten-unter-windows","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/","title":{"rendered":"PHP: Dateizugriff mit Umlauten unter Windows"},"content":{"rendered":"<p>Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \"dies ist ein bild.jpg\"), ohne Umlaute oder Sonderzeichen (nicht \"fu\u00dfball.jpg\"), ohne Backslashes (nicht \"Arbeit\\Auto.jpg\") sowie in Kleinschreibung (nicht \"test.JPG\") abgelegt werden. K\u00fcrzlich musste ich f\u00fcr ein Kundenprojekt jedoch auf eine Vielzahl vorgegebener Dateien beliebigen Dateinamens zugreifen und diese weiter verarbeiten.<\/p>\n<p><!--more--><\/p>\n<p>Linux-Systeme erm\u00f6glichen standardm\u00e4\u00dfig den Zugriff auf Dateien mit Umlauten und Sonderzeichen, sodass hier keine Besonderheiten beachtet werden m\u00fcssen. Ganz anders sieht es aus auf Windows-Systemen: Hier muss man ziemlich tricksen und die COM-Schnittstelle anzapfen. Zun\u00e4chst einmal bindet man in die php.ini die ben\u00f6tigte Extension mit<\/p>\n<pre>[COM_DOT_NET]\r\nextension = php_com_dotnet.dll<\/pre>\n<p>ein. Nun kommt die sehr hilfreiche Helper-Klasse <a href=\"https:\/\/gist.github.com\/nicolas-grekas\/2665437\" target=\"_blank\">WinfsUtf8<\/a>\u00a0zum Einsatz, die den Zugriff auf die COM-Objekte stark vereinfacht und nahezu alle PHP-Funktionen, die Dateien betreffen, abbildet. Nach Einbindung der Datei mit<\/p>\n<pre>require_once('WinfsUtf8.php');<\/pre>\n<p>hat man alle M\u00f6glichkeiten des Dateizugriffes, beispielsweise ergibt<\/p>\n<pre>file_exists('\u00e4.jpg');<\/pre>\n<p>f\u00e4lschlicherweise false, wohingegen<\/p>\n<pre>Patchwork\\PHP\\Override\\WinfsUtf8::file_exists('\u00e4.jpg');<\/pre>\n<p>true ergibt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \"dies ist ein bild.jpg\"), ohne Umlaute oder Sonderzeichen (nicht \"fu\u00dfball.jpg\"), ohne Backslashes (nicht \"Arbeit\\Auto.jpg\") sowie in Kleinschreibung (nicht \"test.JPG\") abgelegt werden. K\u00fcrzlich musste ich f\u00fcr ein Kundenprojekt jedoch auf eine Vielzahl vorgegebener Dateien beliebigen Dateinamens zugreifen und diese weiter verarbeiten.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-759","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>PHP: Dateizugriff mit Umlauten unter Windows<\/title>\n<meta name=\"description\" content=\"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht &quot;dies ist ein bild.jpg&quot;), ohne Umlaute oder Sonderzeichen (nicht &quot;fu\u00dfball.jpg&quot;), ohne\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP: Dateizugriff mit Umlauten unter Windows\" \/>\n<meta property=\"og:description\" content=\"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht &quot;dies ist ein bild.jpg&quot;), ohne Umlaute oder Sonderzeichen (nicht &quot;fu\u00dfball.jpg&quot;), ohne\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2014-09-09T12:03:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-03-25T22:07:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"552\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"PHP: Dateizugriff mit Umlauten unter Windows\",\"datePublished\":\"2014-09-09T12:03:30+00:00\",\"dateModified\":\"2017-03-25T22:07:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/\"},\"wordCount\":159,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/\",\"name\":\"PHP: Dateizugriff mit Umlauten unter Windows\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"datePublished\":\"2014-09-09T12:03:30+00:00\",\"dateModified\":\"2017-03-25T22:07:13+00:00\",\"description\":\"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \\\"dies ist ein bild.jpg\\\"), ohne Umlaute oder Sonderzeichen (nicht \\\"fu\u00dfball.jpg\\\"), ohne\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP: Dateizugriff mit Umlauten unter Windows\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"PHP: Dateizugriff mit Umlauten unter Windows","description":"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \"dies ist ein bild.jpg\"), ohne Umlaute oder Sonderzeichen (nicht \"fu\u00dfball.jpg\"), ohne","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/","og_locale":"de_DE","og_type":"article","og_title":"PHP: Dateizugriff mit Umlauten unter Windows","og_description":"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \"dies ist ein bild.jpg\"), ohne Umlaute oder Sonderzeichen (nicht \"fu\u00dfball.jpg\"), ohne","og_url":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/","og_site_name":"Vielhuber David","article_published_time":"2014-09-09T12:03:30+00:00","article_modified_time":"2017-03-25T22:07:13+00:00","og_image":[{"width":700,"height":552,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","type":"image\/jpeg"}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"PHP: Dateizugriff mit Umlauten unter Windows","datePublished":"2014-09-09T12:03:30+00:00","dateModified":"2017-03-25T22:07:13+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/"},"wordCount":159,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/","url":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/","name":"PHP: Dateizugriff mit Umlauten unter Windows","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"datePublished":"2014-09-09T12:03:30+00:00","dateModified":"2017-03-25T22:07:13+00:00","description":"Dateien auf Webservern sollten stets ohne Leerzeichen (nicht \"dies ist ein bild.jpg\"), ohne Umlaute oder Sonderzeichen (nicht \"fu\u00dfball.jpg\"), ohne","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/php-zugriff-auf-dateinamen-mit-umlauten-unter-windows\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"PHP: Dateizugriff mit Umlauten unter Windows"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/posts\/759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/comments?post=759"}],"version-history":[{"count":1,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/posts\/759\/revisions"}],"predecessor-version":[{"id":1307,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/posts\/759\/revisions\/1307"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/media?parent=759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/categories?post=759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/uk\/wp-json\/wp\/v2\/tags?post=759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}