hab ein kleines Problem, ich bekomme per csv Produktdaten übermittelt, die sind teilweise ISO und teils UTF8 kodiert. Die Datenbank ist auf UTF8 eingestellt, nun habe ich den import der Daten so umgesetzt, dass eigentlich UTF8 Zeichen in ISO konvertiert und in die DB geschrieben werden sollten, da wusste ich aber noch nicht, dass die ebenfalls UTF8 ist, so dass die Daten doch wieder in UTF8 geschrieben werden, nun habe ich ein paar Hundert Datensätze die Sonderzeichen enthalten.
Welchen Weg habe ich nun um die Daten lesbar im Shop zu bekommen, ich vermute mal sowas wie utf8_encode im Template, falls ja welches und wie wird das in Smarty umgesetzt?
Finde beide Lösungen eher Suboptimal, würde bedeuten dass ein Scrip per Cronjob dauerhaft ohne Kontrolle laufen müsste. Es kommen ja täglich neue Artikel hinzu. Mir wäre eine Lösung lieber, die sich auf die Ausgabe im Template beschränkt.
Auch die Lösung das Problem direkt am Template geradezu biegen ist suboptimal. Hier musst du tatsächlich die Sache auf den Grund gehen und schauen das die Automatismen korrekt funktionieren.
Ich versuche es mal so umzusetzen. Worauf bezieht sich deine Variable $title, vermute mal soll nur ein Beispiel sein!? Und ist es bei Smarty egal an welcher Position der Quelltext steht, also ob im Head oder vor der var?
Das Problem bei den Automatismen ist, dass jeder seine csv oder txt Dateien nach seinen Vorgaben ausliefert, dummerweise hatte ich das vorab nicht bedacht.
Nein. Das ist NICHT egal. Bei Smarty müssen PHP Funktionen Tabulator getrennt danach stehen:
[{$var|var_dump}]
[QUOTE=itnic;178040]dass jeder seine csv oder txt Dateien nach seinen Vorgaben ausliefert[/QUOTE]
Du nimmst das irgendwo doch entgegen, ich vermute in einem PHP Datei. Also, hier wäre das perfekte platz umlaute zuerst umzuschreiben und erst danach in die Datenbank zu schreiben oder an die Template zu schicken.
Wie gesagt in Smarty Template so etwas zu machen ist suboptimal.
Witziger Weise habe ich das auch so umgesetzt, habe dafür extra eine Funktion gebastelt. Bringt aber nichts, wenn die Tabelle auf UTF8 eingestellt ist, Umlaute vorab in ISO umwandelt und dann in eine UTF8 DB schreibt, darauf hatte ich nicht geachtet.
Ich werde beim nächsten Projekt mal genauer hinschauen.
[QUOTE=itnic;178044]Bringt aber nichts, wenn die Tabelle auf UTF8 eingestellt ist, Umlaute vorab in ISO umwandelt und dann in eine UTF8 DB schreibt, darauf hatte ich nicht geachtet.[/QUOTE]
Dann ändere das doch einfach :rolleyes:. Aus:
$str = utf8_decode($str);
machst du:
//$str = utf8_decode($str);
Ganz ehrlich die Idee das im Template zu fixen ist Unsinn.