Hallo.
Hi,
erstmal vielen Dank für die tolle Software. Ich bin gerade mit meinen Shop von xt:Commerce auf modified eCommerce Shopsoftware umgestiegen. Mein bisheriger Shop war bereits im Frontend sowie Datenbank seitig komplett auf UTF-8 umgestellt. Bei modified eCommerce Shopsoftware hatte ich jedoch einige Probleme mit den UTF-8 Strings im Titel-Tag sowie bei den meta Angaben für die Keywords und die Description. Bei den SEO URL's wurden mir die deutschen Umlaute ebenfalls nicht ersetzt. Da ich in diesem Forum noch keine Lösung für dieses Problem gefunden habe, möchte ich Euch meine Lösung vorstellen:
Basierend auf der modified eCommerce Shopsoftware 1.05 habe ich folgendes geändert:
metatags.php:
Zeile
$meta_descr = $product->data['products_name'].': '.$product->data['products_description'];
ersetzen mit
$meta_descr = utf8_decode($product->data['products_name']).': '.$product->data['products_description']; Zeile
$meta_keyw = metaKeyWords($contents_meta['content_title'].' '.$contents_meta['content_heading'].' '.$contents_meta['content_text']);
ersetzen mit
$meta_keyw = metaKeyWords
(utf8_decode($contents_meta['content_title']).' '.utf8_decode($contents_meta['content_heading']).' '.$contents_meta['content_text']); Zeile
$meta_descr = ($contents_meta['content_heading'])?$contents_meta['content_heading'].': ':'';
ersetzen mit
$meta_descr = ($contents_meta['content_heading'])?
utf8_decode($contents_meta['content_heading']).': ':''; $meta_descr .= $contents_meta['content_text']; Zeile
<title><?php echo metaClean($meta_title);?></title>
ersetzen mit
<title><?php echo $meta_title;?></title>
shopstat_functions.inc.php:
Zeile
ersetzen mit
Die beiden Änderungen habe ich auch als Patch mit angehängt. Vielleicht nützt es ja dem einen oder anderen.
Und hier noch ein Beispiel aus einem laufenden Shop
du sagst also dein alter Shop habe utf-8 beherscht.
Es war aber ein xtc?
Und das ist PHP?
OK, die Frage war rethorisch, nur ich bin bei dem Thema nach wie vor eigen.
PHP wird vor der Version 6 kein utf-8 können, das ist Fakt.
Wenn Ihr von utf-8 sprecht meint ihr das Durchschleifen von "utf-octets", das hat mit utf-8 innerhalb einer Umgebung die Unicode beherrscht nichts zu tuen.
Wenn eine Programmiersprache Unicode kann, dann werden Eingaben (z.B. vom Browser) intern in Zeichen gewandelt. Aus dem A-Tilde+Trallala wird *ein* Zeichen, dies wird via High-Bit oder UTF-Flag umgesetzt, das macht der Entwickler der Sprache. Ihr müsst euch damit nicht befassen wie das genau geht. Bei der Ausgabe der Daten wird wieder decodiert, so dass es via TCP übertragbar ist oder in eine Datei geschrieben werden kann.
encode / decode werdet ihr in PHP6 lernen müssen und bis dahin ist es halt nur pseudo_Durchschleifen von decodiertem Unicode oder wie hier versucht pseudo-Umwandeln von bzw. in utf8, was aber mit einer Basis von 256 Zeichen, soviel handelt php intern nicht wirklich funktioniert.
Zitat:
string utf8_decode ( string $data )
Diese Funktion dekodiert Daten (data), die in UTF-8 zu sein scheinen, in ISO-8859-1.
bzw.
utf8_encode
utf8_encode — Konvertiert eine ISO-8859-1-Zeichenkette in UTF-8
PHP arbeitet intern nur mit 256 Zeichen.
EDIT: Im Grunde ist mir klar, dass ihr mich nicht versteht.
Es liegt auf der Hand, ihr könnt es nicht, nein nein das ist nicht überheblich, es ist halt so, dass diese Umstellung und das Umdenken Zeit braucht. Ich habe als Perl-Hacker viel Zeit damit verbracht, im (Perl)Entwicklungsstand, den PHP heute hat, habe ich Module zur Anpassung bzw. für den Übergang geschrieben (Zeit verschwendet...), als Perl soweit war habe ich teilweise dagestanden wie der Ochs vorm Berg, vor kurzem noch, bis ich es raus hatte, wie ich MySQL oder TomCat klarmachen konnte, das wir jetzt utf-8 reden. Die Umstellerei dauert noch an.
Gruß
Kristian