suche und utf-8

Gesperrt
wuselmann
Beiträge: 35
Registriert: Mi 19. Okt 2005, 11:24
Wohnort: Hamburg
Kontaktdaten:

suche und utf-8

Beitrag von wuselmann » Sa 23. Feb 2008, 21:06

Hallo,


für einen Kunden habe ich eine Seite in 5 Sprachen erstellt und bereits mit Daten gefüllt.

- Backend ist angepasst (Link)
- Alle Sprachen stehen in den Einstellungen auf "utf-8"
-
- Form-Tag der Suche enthält

Code: Alles auswählen

accept-charset="utf-8" enctype="utf-8" 
- Metatag für Sprache korrekt

Code: Alles auswählen

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
- Kollation der DB-Tabellen: utf8_general_ci
- Datenbank: MySQL 5.0.51 @ UTF-8
- PHP 4.4.7

Über die Suche kann ich aber keine Wörter mit Umlauten oder den putzigen schwedischen Sonderzeichen finden. Lasse ich diese weg, so ist es kein Problem.

Über PHPmyAdmin gesucht finde ich in der Tabelle con_content z.B. "m%C3%B6chten" anstatt "möchten".


Wie muss ich vorgehen, damit die Suche richtig funktioniert?


Grüße

wosch

Re: suche und utf-8

Beitrag von wosch » Sa 23. Feb 2008, 21:19

wuselmann hat geschrieben:Wie muss ich vorgehen, damit die Suche richtig funktioniert?
Suche mal den Thread (Forensuche)
Ihre Suche nach 'gummib&auml;rchen' hat 2 Treffer

Das könnte dir helfen dein Problem zu Lösen (ohne Gewähr - aber mir viel Hoffnung)

wuselmann
Beiträge: 35
Registriert: Mi 19. Okt 2005, 11:24
Wohnort: Hamburg
Kontaktdaten:

Beitrag von wuselmann » Sa 23. Feb 2008, 23:09

Hallo wosch,


danke für den Hinweis. Habe in dem von Dir gemeinten Beitrag von 2005 dazu allerdings keine Lösung gefunden. Ist jemandem ein Modul bekannt, das bei der Suche utf-8 komplett unterstützt?


Grüße
Holger

wuselmann
Beiträge: 35
Registriert: Mi 19. Okt 2005, 11:24
Wohnort: Hamburg
Kontaktdaten:

Beitrag von wuselmann » Fr 14. Mär 2008, 17:05

Hi.

Selbst habe ich inzwischen mal einen Blick in das Modul "SearchOutput" geworfen und mein Glück in Zeile 114 versucht:

Code: Alles auswählen

$aSearchResults = $search->searchIndex($searchterm, ''); 
Bis hin zum Konstrukt

Code: Alles auswählen

$aSearchResults = $search->searchIndex(urlencode(utf8_decode($searchterm)), ''); 
blieb die Unfunktion der Suche, Umlaute und Sonderzeichen zu finden, erhalten.

Gibt es Anregungen oder konkrete Lösungsvorschläge aus dem Publikum?


Grüße

wuselmann
Beiträge: 35
Registriert: Mi 19. Okt 2005, 11:24
Wohnort: Hamburg
Kontaktdaten:

Beitrag von wuselmann » Mo 29. Dez 2008, 13:27

Hallo.

Ich möchte das Thema noch mal nach oben befördern.

Nach dem Update auf 4.8.8 habe ich nun auch noch das Problem, dass die Ausgabe von Umlauten schief läuft.

Hat jemand das selbe Problem schon mal in der Konstellation gehabt und beheben können?

Link: http://www.tulipiippu.com/de/suchergebn ... chterm=der

Grüße
Holger

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Re: suche und utf-8

Beitrag von kptkip » Di 15. Sep 2009, 14:15

Hi,

ich hab das gleiche Problem - ohne eine Lösung!

Weißt Du, dass Deine Suche keine Umlaute findet? Also zum Suchwort "unter" findet er ne Menge Einträge, zu "über" allerdings keinen einzigen. Ich nehme mal an, dass Du irgendwo mal dieses Wort geschrieben hast, oder ;-)

Ich weiß auch nicht woran das liegt. Bei anderen Installationen klappt das unter iso.... wunder bar. Bei diesem Auftritt garnicht :?

So long!

victor
Beiträge: 70
Registriert: Mo 27. Jan 2003, 08:54
Wohnort: Kassel
Kontaktdaten:

Re: suche und utf-8

Beitrag von victor » Di 16. Feb 2010, 09:00

Hat da jemand eine Lösung stehe nämlich auch grad davor.
"Niemand weiss mehr als alle zusammen"

Leo
Beiträge: 308
Registriert: Mi 19. Apr 2006, 19:26
Kontaktdaten:

Re: suche und utf-8

Beitrag von Leo » Fr 16. Dez 2011, 14:28

Hallo,

folgende Anpassungen müssen vorgenommen werden:

1. In der class.search.php muss in der Zeile 475 dies geändert werden:
Vorher:

Code: Alles auswählen

		if (strtolower($sEncoding) != 'iso-8859-2') {
			$key = htmlentities($key, NULL, $sEncoding);
		} else {
			$key = htmlentities_iso88592($key);
		}
Nachher:

Code: Alles auswählen

		$key = htmlentities($key, NULL, 'iso-8859-1');
Anscheinend ist diese Klasse nicht wirklich für utf-8 geeignet. :? Ganz blicke ich da auch noch nicht durch, aber damit konnte ich bei mir das Problem z. T. lösen.

Des weiteren müssen im Search_Output Modul bei der Ausgabe folgende Punkte geändert werden.

ab Zeile 59

Code: Alles auswählen

#Get search term and pre-process it
if (isset ($_GET['searchterm'])) {
    $searchterm = urldecode(htmlentities(strip_tags(stripslashes($_GET['searchterm'])),ENT_QUOTES,"UTF-8")); // utf-8
}
elseif (isset ($_POST['searchterm'])) {
    $searchterm = urldecode(htmlentities(strip_tags(stripslashes($_POST['searchterm'])),ENT_QUOTES,"UTF-8")); // utf-8
}

$searchterm = str_replace(' + ', ' AND ', $searchterm);
$searchterm = str_replace(' - ', ' NOT ', $searchterm);
$searchterm_display = $searchterm;

$searchterm_display = html_entity_decode($searchterm_display,ENT_QUOTES,"UTF-8"); // utf-8
Zeile 110

Code: Alles auswählen

    $searchterm = html_entity_decode($searchterm,ENT_QUOTES,"ISO-8859-1"); // iso-8859-1 weil db nicht utf-8 ist
Hier verwende ich ISO, weil diese Datenbank noch im ISO arbeitet.

Zeile 303

Code: Alles auswählen

        $tpl->set('s', 'MESSAGE', $sYourSearchFor." '".utf8_encode(htmlspecialchars(strip_tags($searchterm)))."' ".mi18n("hat leider keine Treffer ergeben").".");
Ich verwende bei diesem Beispiel die Contenido Version 4.8.14.

WICHTIG!!!

Ihr müsst die Artikel, wo das besagte Suchwort vorkommt, noch mal im Backend(HTML-Editor) neu abspeichern, erst dann wird der Suchbegriff in der Datenbank-Tabelle 'con_keywords` abgespeichert. Mir ist nämlich aufgefallen, dass dort die Suchbegriffe gefehlt haben. Die Funktion removeSpecialChars() übergibt das Suchwort an die Funktion searchIndex() sonst nicht. :motz: Vielleicht liegt es an meiner CMS-Einstellung. :( Mensch, war das ne Sucherei.

Hoffe, es hilft jemanden.

Viele Grüße aus Halle

Leonhard

Gesperrt