{"id":9012,"date":"2017-01-02T20:04:00","date_gmt":"2017-01-02T20:04:00","guid":{"rendered":"https:\/\/www.wegneronline.com\/blog\/2017\/01\/02\/typo3-migration-von-4-x-auf-6-2-mit-kodierungsproblemen\/"},"modified":"2024-02-22T08:33:52","modified_gmt":"2024-02-22T07:33:52","slug":"typo3-migration-von-4-x-auf-6-2-mit-kodierungsproblemen","status":"publish","type":"post","link":"https:\/\/www.wegneronline.com\/blog\/2017\/01\/02\/typo3-migration-von-4-x-auf-6-2-mit-kodierungsproblemen\/","title":{"rendered":"Typo3 Migration von 4.x auf 6.2 mit Kodierungsproblemen"},"content":{"rendered":"\n<p>Wenn eine Typo3-Installation in Version 4.x von Server A nach Server B migriert werden soll kann es zu Problemen mit der Codierung kommen (latin1 vs. utf-8).<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><em>(Ein Update mit einem einfachen Weg zur Umcodierung am Ende der Seite!)<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Symptome<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Inhalte \/ Strings mit Umlauten wird nicht dargestellt, weder im Backend noch im Frontend (z.B. &#8222;Men\u00fcs&#8220;, &#8222;Caches l\u00f6schen&#8220;)<\/li>\n\n\n\n<li>Bilder im Frontend werden nicht angezeigt, wenn die page Umlaute beinhaltet (genauer: Die Bilder in typo3temp werden nicht generiert)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ursache<\/h4>\n\n\n\n<p>Das Problem ist, dass die Inhalte in der Datenbank in latin1 \/ iso-8859-1 codiert sind und Typo3 utf-8 nutzt. Dies ist vermutlich aber erst ab einer gewissen PHP-Version &gt;5.2 so, also betrifft vor allem Systeme, bei denen ein PHP-Upgrade durch die Migration verursacht wird.<br>\nDamit die Zeichen richtig ausgegeben werden m\u00fcssen drei Faktoren stimmen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Codierung mit der Typo3 arbeitet<\/li>\n\n\n\n<li>Codierung der Datenbankverbindung<\/li>\n\n\n\n<li>Codierung der Datenbankinhalte<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Probleml\u00f6sung<\/h4>\n\n\n\n<p>Die einfachste und zukunftssicherste Probleml\u00f6sung ist alle Inhalte auf UTF-8 zu konvertieren, da Typo3 in neueren Versionen standardm\u00e4\u00dfig mit UTF-8 arbeitet.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Exportieren der Datenbank per mysqldump mit der Option &#8211;default-character-set=utf8<\/li>\n\n\n\n<li>Manuelles Ersetzen aller Vorkommnisse von &#8222;latin1_&#8220; durch &#8222;utf8_&#8220; (z.B. mit vim: :%s\/latin1_\/utf8_\/)<\/li>\n\n\n\n<li>Manuelles Ersetzen aller Vorkommnisse von &#8222;DEFAULT CHARSET=latin1&#8220; durch &#8222;DEFAULT CHARSET=utf8&#8220; (z.B. mit vim: :%s\/DEFAULT CHARSET=latin1\/DEFAULT CHARSET=utf8\/)<\/li>\n\n\n\n<li>Einspielen des Dumpy mit der Option &#8211;default-character-set=utf8<\/li>\n\n\n\n<li>\u00c4ndern der localconf.php, folgende Einstellungen \u00e4ndern:<br>\n\t$TYPO3_CONF_VARS[&#8218;SYS&#8216;][&#8217;setDBinit&#8216;] = &#8218;SET NAMES utf8;&#8216;; $TYPO3_CONF_VARS[&#8218;BE&#8216;][&#8218;forceCharset&#8216;] = &#8218;utf-8&#8216;;<\/li>\n<\/ol>\n\n\n\n<p>Danach sollte Typo3 wieder problemlos laufen und alle Strings richtig ausgeben.<br>\n&nbsp;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Update!<\/h3>\n\n\n\n<p>Ein Arbeitskollege von mir, genauer gesagt der Certified Extension-Entwickler und Typo3-Association-Mitglied <a href=\"http:\/\/www.linear-art.de\/\" target=\"_blank\" rel=\"noopener\">Torsten Schrade<\/a>, hat einen weniger fummeligen Weg gefunden, das Ganze \u00fcber die B\u00fchne zu bringen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><span class=\"s1\">phpmyadmin aufrufen und eine leere DB mit Kollation latin1_general_ci&nbsp;<\/span><span class=\"s1\">erstellen<\/span><\/li>\n\n\n\n<li>Die Datenbank&nbsp;Einspielen als latin1:<br>\n\t<em>mysql -uXXX&nbsp;-pXXX &#8211; -default-character-set=latin1 DATENBANK&nbsp;&lt; DUMP.sql<\/em><\/li>\n\n\n\n<li>Ausspielen als latin1\/compatible (= ohne Kollationsinformationen):<br>\n\t<em>mysqldump -uroot -pvagrant &#8211; -default-character-set=latin1&nbsp;&#8211; -compatible=mysql40 DATENBANK&nbsp;&gt; DUMP.latin1.sql<\/em><\/li>\n\n\n\n<li>Konvertieren mit iconv:<br>\n\t<em>iconv -f ISO-8859-1 -t UTF-8 DUMP.latin1.sql &gt; DUMP.utf8.sql<\/em><\/li>\n\n\n\n<li>DUMP.utf8.sql in bspw. in Textwrangler, vim o.\u00e4. \u00f6ffnen und darauf&nbsp;achten, dass die Datei in UTF8 angezeigt wird. Konkret also pr\u00fcfen, ob die Umlaute korrekt dargestellt werden.&nbsp;Stimmen die Umlaute war die Konversion erfolgreich.<\/li>\n\n\n\n<li>Wenn alles stimmt:&nbsp;Bei der Tabellendeklaration im Dump TYPE=MyISAM in ENGINE=MyISAM (und ggf. das gleiche mit InnoDB) \u00e4ndern und abspeichern, z.B. \u00fcber &#8222;Suchen\/Ersetzen&#8220;.<\/li>\n\n\n\n<li>phpmyadmin aufrufen, alte Datenbank&nbsp;l\u00f6schen und neu anlegen, diesmal aber mit&nbsp;Kollation utf8_general_ci<\/li>\n\n\n\n<li>Die konvertierte Datenbank einspielen:<br>\n\t<em>mysql -uroot -pvagrant &#8211;default-character-set=utf8 DB &lt;&nbsp;DUMP.utf8.sql<\/em><\/li>\n\n\n\n<li>Fertig.<\/li>\n<\/ol>\n\n\n\n<p>Im Endeffekt erspart einem das die Suchen\/Ersetzen der ganzen Kollationsinformationen, da diese erst gar nicht mit exportiert werden.<\/p>\n\n\n\n<p>Danke an Torsten f\u00fcr diesen Input \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn eine Typo3-Installation in Version 4.x von Server A nach Server B migriert werden soll kann es zu Problemen mit der Codierung kommen (latin1 vs. utf-8).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-9012","post","type-post","status-publish","format-standard","hentry","category-5-informatik"],"_links":{"self":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/comments?post=9012"}],"version-history":[{"count":2,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9012\/revisions"}],"predecessor-version":[{"id":9106,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9012\/revisions\/9106"}],"wp:attachment":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/media?parent=9012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/categories?post=9012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/tags?post=9012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}