[gelöst] SUMATAGGED 5.01 Umlaut Ä und Ü werden falsch angezeigt

Begonnen von nudels64, 19 Juni 2013, 01:35:31

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

nudels64

Hallo,

Händler wird z.B. als hã¤ndler dargestellt. Oder "für" wird so "fã¼r" angezeigt. Bis jetzt hab ich das immer direkt in der Datenbank korrigiert und in den Konfigdateien sehe ich leider nicht durch.


Lieben Gruß Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

bisheriger Lösungsansatz: Habe in die track.php folgende Zeilen eingefügt:


$keywordString =  str_replace('ãÅ"', 'Ü', $keywordString);
$keywordString =  str_replace('ã ¶', 'ö', $keywordString);
$keywordString =  str_replace('ãâ€"l', 'Ö', $keywordString);


Jetzt bastle ich grad am scharfen "ß".
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

AlternativeComputing

Das ist ein Sprachkodierungs Problem.

UTF-8/ISO 8859-1.

Gibt es da Sprachdateien?
Wenn ja, kannst Du mal die Deutsche hier anhängen?
MfG

Peter

nudels64

#3
Hallo Peter,

danke für die schnelle Reaktion. Der Mod hat keine Sprachdateien. Die Stelle in der track.php die es betrifft sieht so aus:

                          $keywordString = str_replace('+',' ', urldecode($keywordString));
                          $keywordString = str_replace(array('%C3%BC','%20','%E4', '%C4', '%FC','%DC','%F6','%D6','%DF', '%80'),
    array('¸', ' ' ,'‰',   'ƒ'  ,'¸'   ,'‹'  , 'ˆ', '÷',   'fl',   'Ä'), $keywordString);

    $umlaute = array("%C3%BC", ",Ǩ", ",?¨", "¬Æ", "√Ñ", "¬≤", "√ñ", "√ü","√©", "√ú", "√∂", "√§", "√º");
    $ersetzung = array("¸", "Ä", "Ä", "Æ", "ƒ", "≤", "÷", "fl","e¥", "‹", "ˆ", "‰", "¸");
    $keywordString = str_replace($umlaute,$ersetzung,$keywordString);
    $keywordString =  str_replace('"', ' ',$keywordString);
    $keywordString =  str_replace("'", " ", $keywordString);
    $keywordString =  str_replace('%22', ' ', $keywordString);
    $keywordString =  str_replace('++', ' ', $keywordString);
    $keywordString =  str_replace('%2B', ' ', $keywordString);
    $keywordString =  str_replace('s%26s', '&', $keywordString);
    $keywordString =  str_replace('%C3%9F', 'fl', $keywordString);
    $keywordString =  str_replace('%C3%A4', '‰', $keywordString);
    $keywordString =  str_replace('  ', ' ', $keywordString);
    $keywordString =  str_replace('/', '', $keywordString);
//neu
    $keywordString =  str_replace('ãÅ"', 'Ü', $keywordString);
    $keywordString =  str_replace('ã ¶', 'ö', $keywordString);
    $keywordString =  str_replace('ãâ€"l', 'Ö', $keywordString);


Der Mod ist von Webfan. "Ä" und "Ü" habe ich wohl hinbekommen. Die Datenbank hab ich mal bereinigt. Sieht jetzt übersichtlicher aus.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Webfan

Hallo nudels64,
der Code ist schon etwas älter  :red:


  • Welche Kollation hat Deine Datenbank?



$keywordString = str_replace(array('%C3%BC','%20','%E4', '%C4', '%FC','%DC','%F6','%D6','%DF', '%80'),
     array('¸', ' ' ,'‰',   'ƒ'  ,'¸'   ,'‹'  , 'ˆ', '÷',   'fl',   'Ä'), $keywordString);

   ... bis...

   $keywordString = str_replace($umlaute,$ersetzung,$keywordString);

Ich denke das zumindest dieser Quatsch entfernt werden könnte.
[/li]


[li]
Du könntest noch versuchen nach
[/li][/list] $keywordString = str_replace('+',' ', urldecode($keywordString));
einzufügen:
$keywordString = htmlentities($keywordString);

    [/li]

Wie AlternativeComputing schon richtig gepostet hat handelt es sich um ein Codierungsproblem.
Leider habe ich in absebahrer Zukunft keine Zeit um dieses Modul upzudaten, helfe aber gerne bei Fragen weiter.
Ich hoffe das Dir die obigen Antworten helfen (ggf. könnte auch iconv von Nutzen sein?).
Wenn der Input "richtig" ankommt jedoch falsch angezeigt wird könnte eine Umstellung der DB-Tabellen-Kollation ausreichen.

mfg

nudels64

#5
Mit Kollation kann ich nichts anfangen. Das Modul von Dir ist das Aktuellste, welches bei Dir zu laden war. Warum da dann noch der Code drin steht, der gelöscht werden soll, müßte dann auch in der Installationsanleitung stehen. Mir fehlt jetzt eigentlich nur noch die richtige Darstellung des "ß", so hoffe ich.

Liebe Grüße Andreas

EDIT: Die Darstellung des "ß" scheint auch zu klappen. Den Codeschnippsel hab ich entfernt. Ich teste mal.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Webfan

Hallo nudels64,
der Code soll nicht gelöscht werden, nur eine mögliche Idee das Problem zu lösen, bzw. für künftige Versionen, welche leider derzeit aus zeitlichen Gründen jedoch nicht absehbar sind.


ZitatMit Kollation kann ich nichts anfangen
https://www.google.de/#q=datenbank+kollation&ei=Wn3BUdvLBZO3hAf2ooCIDA&start=0&sa=N&bav=on.2,or.r_qf.&bvm=bv.47883778,d.Yms&fp=cd1c3b4f1f562de2&biw=1024&bih=563

Das Script wurde wenn ich mich recht errinere mit einer ISO-Kollation geschrieben, neue Pragmas sollen wie ich es verstanden habe UTF-8 unterstützen, ich rate mal das Dein PMX auch UTF-8 als Kodierung angibt?
Wenn Du z.b. in phpmyadmin eine Tabelle auswählst --> Operationen --> Kollation:
Hier kannst Du die Kollation einsehen, verändern.

ZUr Zeit liegt wie gesagt kein Update des Scriptes an, evtl. kann ich je nach Nachfrage das Script überarbeiten/neu coden...?

Für Fragen stehe ich gerne zur Verfügung.

mfg

nudels64

Jupp, ich arbeite mit UTF-8 Codierung. Ich finde das Script genial. Man muss es nur etwas pflegen und seinen Bedürfnissen anpassen, damit es nicht das Layout zerreißt.
Ich habe jetzt mal alle Suchbegriffe mit Umlauten, die auf der Seite zu finden sind getestet. Bis jetzt sind die Fehler nicht wieder aufgetaucht.

Lieben Gruß Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

Hallo Webfan,

reicht es die Zeile $keywordString = htmlentities($keywordString); einzufügen oder muss ich hier zusätzliche Parameter setzen?

Lieben Gruß Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Webfan

Halllo nudels64,
ich hab grad das Script nicht im Kopf, kann später mal schauen, je nach ob in keywordstring bereits der q parameter enthalten ist könnte sich hier

   urldecode

anbieten.

Viele Grüße

nudels64

So schauts im Moment aus:

// das kann hier noch verbessert werden..?!?:
     $keywordString =  str_replace('+',' ', urldecode($keywordString));
     $keywordString = htmlentities($keywordString);
     $keywordString =  str_replace('"', ' ',$keywordString);
     $keywordString =  str_replace("'", " ", $keywordString);
     $keywordString =  str_replace('%22', ' ', $keywordString);
     $keywordString =  str_replace('++', ' ', $keywordString);
     $keywordString =  str_replace('%2B', ' ', $keywordString);
     $keywordString =  str_replace('s%26s', '&', $keywordString);
     $keywordString =  str_replace('%C3%9F', 'fl', $keywordString);
     $keywordString =  str_replace('%C3%A4', '‰', $keywordString);
     $keywordString =  str_replace('  ', ' ', $keywordString);
     $keywordString =  str_replace('/', '', $keywordString);
$keywordString =  str_replace('ãÅ"', 'Ü', $keywordString);
$keywordString =  str_replace('ã ¶', 'ö', $keywordString);
$keywordString =  str_replace('ãâ€"l', 'Ö', $keywordString);;
                                 }
                              }
                              //eof if keyword detected


Wäre schön wenn Du da noch einmal drüber sehen könntest.

Lieben Gruß Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

Ich hab mich zu früh gefreut. Die Umlaute werden trotz aller Bemühungen falsch dargestellt. Ich hab keine Lösung mehr die ich testen könnte.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

AlternativeComputing

MfG

Peter

nudels64

Ne Peter, so bewandert bin ich nicht um die Funktion komplett umzubauen im Script.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Webfan

Möglicherweise betrifft die Änderung des obigen codes nur neu generierte tags und nicht bestehende?

Zitat$keywordString = utf8_encode($keywordString);

Bin noch nicht zum nachschauen gekommen, es könnte sich aber um einen urlencodierten get paramater handeln? /?q=suchwort
$keywordString = urldecode($keywordString);

Unabhängig davon, wie AlternativeComputing schon sagt wird der Fehler mit UTF-8 zu tun haben...

Leider bin ich derzeit zeitlich in andere Projekte eingebunden, stehe ggf. für einen kleinen Auftrag zur Verfügung, ein Update dieses Moduls ist zunächst so zur Zeit nicht in meinem Programm.

mfg


nudels64

Die Tabellen habe ich schon mehrmals geleert. Was meinst Du mit kleinen Auftrag? Die Seite betreibe ich als Hobby.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

#16
Habe jetzt wohl eine Lösung gefunden:

Die Tags werden jetzt korrekt angezeigt
http://awesomescreenshot.com/0641g6rz0b

und auch korrekt in die Tabelle geschrieben

http://awesomescreenshot.com/08f1g6sl28

Ich habe die Tabellen komplett gelöscht und neu angelegt. Anschliessend als Kollation uff8_general_ci und nicht utf8_bin umgestellt.
In der Block-Datei hab ich header('Content-Type: text/html; charset=UTF-8'); (ob das zur Lösung beiträgt teste ich noch) eingefügt. Wichtig scheint nach dem Anlegen der Tabellen die Umstellung der Kollation auf utf8_general_ci zu sein.

Liebe Grüße
Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

Hier kann geschlossen werden. Danke für die Hilfestellungen.

Lieben Gruß Andreas
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

AlternativeComputing

MfG

Peter