{"id":153,"date":"2016-11-12T16:27:36","date_gmt":"2016-11-12T15:27:36","guid":{"rendered":"https:\/\/josjo.de\/Blog\/?p=153"},"modified":"2020-12-30T16:47:50","modified_gmt":"2020-12-30T15:47:50","slug":"php-5-6-umlaut-problem","status":"publish","type":"post","link":"https:\/\/josjo.de\/Blog\/2016\/11\/12\/php-5-6-umlaut-problem\/","title":{"rendered":"PHP 5.6 Umlaut Problem"},"content":{"rendered":"<p>Da PHP 5.5 nicht mehr von der PHP Community unterst\u00fctzt wird, war eine Umstellung einiger eigener Webprojekte auf PHP 5.6 notwendig. Ohne weitere Anpassungen vorzunehmen, lief PHP 5.6 bereits nahezu reibungslos. Nur die Darstellung von Umlauten, welche aus einer MySQL 5.5 Datenbank stammen, war fehlerhaft: Statt \u00e4,\u00f6 oder \u00fc wurden kryptische Zeichen angezeigt. Nach einer l\u00e4ngeren Recherche im Internet bin ich auf eine L\u00f6sung gesto\u00dfen, welche in meinem Fall funktioniert hat.<!--more--><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;!DOCTYPE HTML&gt;\r\n&lt;html&gt;\r\n\u00a0\u00a0 \u00a0&lt;head&gt;\r\n\u00a0\u00a0 \u00a0\u00a0 &lt;title&gt;PHP&amp;MySQL Umlaute&lt;\/title&gt;\r\n\u00a0\u00a0 \u00a0\u00a0 &lt;meta charset=&quot;UTF-8&quot;&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/head&gt;\r\n\u00a0\u00a0 \u00a0&lt;body&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;?php \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$verbindung = mysqli_connect('127.0.0.1', 'user1', '1234', 'datenbank1') or die(&quot;Verbindung zur Datenbank konnte nicht hergestellt werden.&quot;);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Behebt Umlautproblem\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0mysqli_query($verbindung, &quot;SET NAMES 'utf8'&quot;);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Nun liefern alle Abfragen die Umlaute richtig zur\u00fcck, bis die Verbindung zur Datenbank geschlossen wird.\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$abfrage=&quot;SELECT * FROM myTable&quot;;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ergebnis=mysqli_query($verbindung, $abfrage);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0while($zeile = $ergebnis-&gt;fetch_assoc())\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo $zeile&#x5B;'spalte1'] . '&lt;br \/&gt;';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0mysqli_close($verbindung);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0?&gt;\r\n\u00a0\u00a0 \u00a0&lt;body\/&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Die Ursache f\u00fcr das Problem war, dass das <em>default_charset<\/em> in der Konfigurationsdatei <em>php.ini<\/em> in PHP 5.6 abge\u00e4ndert wurde: von undefiniert auf <em>UTF-8<\/em>. Ich habe zuerst versucht, die MySQL Datenbank mit globalen Optionen so einzustellen, dass ich die Ausgabe immer in UTF-8 bekomme. Das hat aber leider nicht geklappt. Die einzige L\u00f6sung, die bei mir funktioniert hat, ist die oben gezeigte: Direkt nach dem Verbindungsaufbau zur Datenbank wird eine Abfrage an die Datenbank gesendet, welche die Verbindung auf UTF-8 konfiguriert. Solange die Verbindung besteht, liefern nun alle Abfragen die Ergebnisse in UTF-8 zur\u00fcck und k\u00f6nnen fortan durch PHP richtig ausgegeben werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da PHP 5.5 nicht mehr von der PHP Community unterst\u00fctzt wird, war eine Umstellung einiger eigener Webprojekte auf PHP 5.6 notwendig. Ohne weitere Anpassungen vorzunehmen, lief PHP 5.6 bereits nahezu reibungslos. Nur die Darstellung von Umlauten, welche aus einer MySQL 5.5 Datenbank stammen, war fehlerhaft: Statt \u00e4,\u00f6 oder \u00fc wurden kryptische Zeichen angezeigt. Nach einer &hellip; <a href=\"https:\/\/josjo.de\/Blog\/2016\/11\/12\/php-5-6-umlaut-problem\/\" class=\"more-link\"><span class=\"screen-reader-text\">PHP 5.6 Umlaut Problem<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[11,10,12],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-php","tag-mysql","tag-php","tag-umlaute"],"_links":{"self":[{"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":14,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/posts\/153\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josjo.de\/Blog\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}