UTF-8 Verschwörung Ergänzung - Druckversion +- PHP Rocks (https://www.php-rocks.de) +-- Forum: Board Gebrabbel (https://www.php-rocks.de/https://www.php-rocks.de/forum/22-board-gebrabbel.html) +--- Forum: Off Topic (https://www.php-rocks.de/https://www.php-rocks.de/forum/26-off-topic.html) +--- Thema: UTF-8 Verschwörung Ergänzung (/https://www.php-rocks.de/thema/143-utf-8-verschwoerung-ergaenzung.html) |
UTF-8 Verschwörung Ergänzung - Till - 26.06.2017 Hallo @all, ich beziehe mich hier auf http://www.php-rocks.de/thema/142;775-re-session-files-werden-nicht-beschrieben.html#pid775 http://www.php-rocks.de/thema/98;506-die-utf8-verschw-rung.html#pid506 welche ich gerne ergänzen möchte, bzw. ich versuche es so gut wie geht zu reproduzieren. (sorry, @Arne, früher hab ich es nicht geschafft, beschäftigt) Problemstellung: - Ich habe eine Datenbank mit "gemixten" Kollationen und entsprechenden Inhalten. Lösung: - Ich analysiere den Output (auf UTF-8) und passe ihn ggf. entsprechend an. ----------------------------------------------------------------------------------- Referenz: ob_start mb_detect_encoding htmlentities html_entity_decode htmlspecialchars_decode PHP-Code: $isUTF8 = function($string) simple_html_dom_parser http://simplehtmldom.sourceforge.net/ PHP-Code: $convHtmlEntities = function($str) use($contentTypes, $isUTF8){ ----------------------------------------------------------------------------------- - ob_start startet den Outputbuffer - simple_html_dom_parser -> find('text') findet Textnodes http://simplehtmldom.sourceforge.net/ - $isUTF8/mb_detect_encoding rät das Encoding - $convHtmlEntities kovertiert - htmlentities konvertiert ----------------------------------------------------------------------------------- Hinweis: Je nach Implementation kann das parsen mit simple_html_dom_parser sehr viel CPU verbrauchen! ----------------------------------------------------------------------------------- Meine konkrete Implementation ist ziemlich "webfan basiert" und nicht allgemein verwendbar deshalb poste ich sie hier nicht, schicke sie aber gerne auf Anfrage per PM o.ä. mfg Till RE: UTF-8 Verschwörung Ergänzung - mermshaus - 28.06.2017 Ich habe jetzt nicht wirklich versucht, das im Detail nachzuvollziehen, aber ich glaube, es stört hier keinen, wenn ich überhaupt mal poste. Wenn du eine Tabelle mit Inhalten in verschiedenen oder gar unbekannten Kollationen hast, sollte das Ziel sein, die Daten in der DB zu vereinheitlichen, sodass man in Zukunft mit bekannten Kollationen arbeiten kann. Also, ein entsprechendes Script ist Code, der einmal für die DB laufen sollte und nicht etwa bei jedem Auslesen auf Ausgabeseite. Dann finde ich deine Einrückung nicht so gut lesbar. Tabs und Spaces vermischt? Im UTF-8-Artikel ist von utf8_*-Kollationen die Rede. Das ist heute leider nicht mehr wirklich zeitgemäß, weil die in MySQL nur 2 Bytes lang sind, also lediglich ~65.000 Unicode-Characters. Das reicht zum Beispiel nicht mehr für die beliebten Emojis. Das ist tatsächlich ein praktisches Problem, das ich etwa mit meinem gegenwärtigen RSS-Reader-Setup habe (TinyTinyRSS). Es braucht in MySQL die utf8mb4_*-Kollationen, die allerdings in älteren MySQL-Versionen leider nicht zur Verfügung stehen. RE: UTF-8 Verschwörung Ergänzung - Till - 29.06.2017 Zitat:Ich habe jetzt nicht wirklich versucht, das im Detail nachzuvollziehen, aber ich glaube, es stört hier keinen, wenn ich überhaupt mal poste.Ich freue mich immer wieder Dich zu lesen Zitat:Wenn du eine Tabelle mit Inhalten in verschiedenen oder gar unbekannten Kollationen hast, sollte das Ziel sein, die Daten in der DB zu vereinheitlichen, sodass man in Zukunft mit bekannten Kollationen arbeiten kann. Also, ein entsprechendes Script ist Code, der einmal für die DB laufen sollte und nicht etwa bei jedem Auslesen auf Ausgabeseite.Richtig! Aber: - Oft gibt es "legacy" code und alte Datenbestände aus verschiedenen Quellen, gemerged in einem Mash-Up aus verschiedenen RSS-Feeds mit unterschiedlicher Kollation, welches nach und nach auf den neuesten Stand gebracht werden muß, um nur ein Beispiel zu nennen. Daher der alternative Ansatz erst die Ausgabe zu "bereinigen". Zitat:Dann finde ich deine Einrückung nicht so gut lesbar. Tabs und Spaces vermischt?Nein schlimmer: Copy&Paste, sorry. mfg Till RE: UTF-8 Verschwörung Ergänzung - Arne Drews - 29.06.2017 mermshaus schrieb:Im UTF-8-Artikel ist von utf8_*-Kollationen die Rede. Das ist heute leider nicht mehr wirklich zeitgemäß, weil die in MySQL nur 2 Bytes lang sind, also lediglich ~65.000 Unicode-Characters. Das reicht zum Beispiel nicht mehr für die beliebten Emojis. Das ist tatsächlich ein praktisches Problem, das ich etwa mit meinem gegenwärtigen RSS-Reader-Setup habe (TinyTinyRSS). Es braucht in MySQL die utf8mb4_*-Kollationen, die allerdings in älteren MySQL-Versionen leider nicht zur Verfügung stehen.Guter Einwand, werde das Tutorial damit "anreichern", danke! |