PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   umlaute bei dgssearch (http://www.selfphp.de/forum/showthread.php?t=24824)

nordy46 09.01.2013 11:28:01

umlaute bei dgssearch
 
Hallo,
setze dgssearch als Suchmaschine auf meiner website ein. Habe das Problem, das die Umlaute bei suchen nicht gefunden werden, obwohl ich als Sprache German eingestellt habe.

Z.B.: Suchanfrage: Geländer

Die Suche nach 'geländer' f�hrte zu keinen Ergebnissen.

Danke für eure Hilfe.

meikel (†) 09.01.2013 11:53:54

AW: umlaute bei dgssearch
 
Zitat:

Zitat von nordy46 (Beitrag 144212)
setze dgssearch als Suchmaschine auf meiner website ein.

Kenn ich nicht.

Zitat:

Habe das Problem, das die Umlaute bei suchen nicht gefunden werden, obwohl ich als Sprache German eingestellt habe.

Z.B.: Suchanfrage: Geländer

Die Suche nach 'geländer' f�hrte zu keinen Ergebnissen.
Falscher Zeichensatz.

nordy46 10.01.2013 18:47:33

AW: umlaute bei dgssearch
 
Zitat:

Zitat von meikel (Beitrag 144214)
Kenn ich nicht.


Falscher Zeichensatz.



Ich habe das Problem bei einer Datenbankabfrage:
1. Absetzen des Query -> OK
2. Antwort der Datenbank -> OK
3. Wenn KEIN Umlaut im Ergebnis -> OK
Wenn Umlaut im Ergebnis -> Wert = {null}


Die Umlaute werden also nicht durch irgendwelche Zeichen ersetzt, sonder tatsächlich durch ein "Null"

Hoffe Ihr könnt mir nen Tip geben...

meikel (†) 10.01.2013 21:11:22

AW: umlaute bei dgssearch
 
Zitat:

Zitat von nordy46 (Beitrag 144217)
Die Umlaute werden also nicht durch irgendwelche Zeichen ersetzt, sonder tatsächlich durch ein "Null"

Ich schrieb doch schon: falscher Zeichensatz.

So, wies aussieht, sind die Umlaute möglicherweise schon, weil abweichend von der Tabellen- oder Stalten-Collation, fehlerhaft kodiert in der Tabelle gelandet sind. MySQL verhält sich da korrekt, wenn es unbekannte Zeichen durch ein Fragezeichen ersetzt.

Nächste Frage ist das Suchormular: welcher Zeichensatz ist dort angebenen?
Der Browser kodiert dann die Umlaute wunschgemäß. Steht dort zB. UTF-8, Deine Tabelle aber (zum Bleistift) aber als Latin-1, dann hast Du ein Problem und viel Arbeit.

nordy46 11.01.2013 09:56:32

AW: umlaute bei dgssearch
 
Also vielen Dank erstmal für die Antwort.
Ich habe folgendes getan:

Eingefügt im Formular im head-bereich:
<meta http-equiv="content-type" content="text/html;" charset="UTF-8">

Eingefügt in der PHP-Datei:
<meta http-equiv="content-type" content="text/html;" charset="UTF-8">

Datenbank:
MySQL-Client-Version: 5.0.67
MySQL-Zeichensatz: UTF-8 Unicode (utf8)

Tabelle:
Kollation latin1_swedish_ci

Wenn ich in der Tabelle das Feld "Ort" die Kollation von
latin1_swedish_ci auf utf8_unicode_ci stelle passiert nichts.

Es wird also bei einer Suchanfrage nach Berlin auch die Treffer von Berlin angezeigt.
Bei der Suche nach München -> Null

Was muss ich tun?

meikel (†) 11.01.2013 14:49:12

AW: umlaute bei dgssearch
 
Zitat:

Zitat von nordy46 (Beitrag 144228)
Eingefügt in der PHP-Datei:
<meta http-equiv="content-type" content="text/html;" charset="UTF-8">

Datenbank:
MySQL-Client-Version: 5.0.67
MySQL-Zeichensatz: UTF-8 Unicode (utf8)

Tabelle:
Kollation latin1_swedish_ci

Für die Suche nach Texten mit UTF-8 Zeichensatz benötigst Du utf8_general_ci für die Tabelle und die varchar bzw. text Spalten. Allerdings hast Du ein Problem, wenn die Tabelle schon existiert, weil MySQL beim Ändern der Collation die Inhalte nicht konvertiert. Falls die Inhalte schon (was ich nicht ausschließe) falsch in der Tabelle vorliegen - also mit nem ? anstelle des Umlautes oder sonstigen ASCII "Sonderzeichen", mußt Du den Kram mehr oder weniger mühsam korrigieren.

In Deinem Script solltest Du
1. die mysqli Extension nutzen
2. mit dieser Funktion bzw. Methode
http://php.net/manual/de/mysqli.set-charset.php
Zitat:

mysqli::set_charset -- mysqli_set_charset — Sets the default client character set
den default Zeichensatz vor dem ersten Query auf 'utf8' setzen.

Bezüglich der "HTML Lieferung" findest Du da
http://www.gerd-riesselmann.de/softw...f-8-ausliefern
auch noch einige Hinweise.

Zitat:

Es wird also bei einer Suchanfrage nach Berlin auch die Treffer von Berlin angezeigt. Bei der Suche nach München -> Null
Wenn in der Datenbank anstelle von 'München' 'M?nchen' steht, weil Du einen UTF8 Text in eine Spalte mit der Collation latin1_swedish_ci gepackt hast, findest Du weder mit einem UTF-8 'ü' noch mit dem ISO-8859-1 'ü' was, weil es diesen Buchstaben in einer Tabelle/Spalte mit dem schwedischen Zeichensatz nicht gibt. Das UTF8 'ü' gibt es nur bei einer UTF8 Collation. Das andere ü in latin1.

Da Du aber ein (mir unbekanntes) Fremdscript nutzt, mußt Du auch dort nachgucken, wo und wie Du den Zeichensatz für Formular und Datenbank einstellen kannst.

Hinweis:
nutze die mysqli Extension
mysql (ohne i) ist ein Auslaufmodell, welches ab PHP 5.5 als depraced notiert ist.
Aktuell ist PHP 5.4.10.

nordy46 11.01.2013 17:23:16

AW: umlaute bei dgssearch
 
[QUOTE=meikel;144229]Für die Suche nach Texten mit UTF-8 Zeichensatz benötigst Du utf8_general_ci für die Tabelle und die varchar bzw. text Spalten. Allerdings hast Du ein Problem, wenn die Tabelle schon existiert, weil MySQL beim Ändern der Collation die Inhalte nicht konvertiert. Falls die Inhalte schon (was ich nicht ausschließe) falsch in der Tabelle vorliegen - also mit nem ? anstelle des Umlautes oder sonstigen ASCII "Sonderzeichen", mußt Du den Kram mehr oder weniger mühsam korrigieren.


Hallo,
ich habe mal eine neue (identische) Tabelle angelegt.
Außer die Kollation mit utf8_general_ci eingerichtet
und die Spalten Varchar.
Dann habe ich den Inhalt - hier orte-deutschland.csv mit notepad
(Ich weiß nicht wie ich bei Phase 5 die codierung einstelle)
abgespeichert (codierung utf8) hochgeladen und...
München -> NULL
Berlin -> Ergebnisse

Also
Datenbank: utf8
Tabelle: utf8_general_ci
orte-finden.php: <meta http-equiv="content-type" content="text/html;" charset="UTF-8">
orte-finden.php: mit notepad: codierung utf8 gespeichert und hochgeladen
orte-deutschland.csv mit notepad: codierung utf8 gespeichert und in Tabelle hochgeladen

Das alles hat mit dgssearch nichts zu tun, sondern ist ein script, dass ich selbst geschrieben habe.
dgssearch ist eine Volltextsuche und habe ich praktisch nebenher.
Aber auch dort ist das gleiche Problem.

Weder bei meinem Script noch bei dgssearch kommt ein Ergebnis bei Umlauten.

Mein Script ganz normal:
include("dbconnect.php");

$abfrage = "SELECT *
FROM `orte-deutschland-02`
WHERE ort LIKE '$ort' ORDER BY 'id' ";
$ergebnis = mysql_query($abfrage);
$treffer=0;

while ($row = mysql_fetch_array($ergebnis))
{
$treffer=1;
... u.s.w.


Beide Scripte liefen bis vor kurzem einwandfrei (seit mehreren Jahren).
Auf Anfrage bei meinem Anbieter kam folgendes:

"an der Konfiguration des Webservers und der Datenbank hat sich auf dem
Server ****** nichts geändert. Wahrscheinlich sind bei Ihnen
einige Datensätze in der Datenbank im "UTF-8" Zeichensatz gespeichert
während ihre Website in "ISO 8859-1" als Zeichenkodierung verwendet.
Dadurch können bei der Ausgabe von Umlauten und anderen Sonderzeichen
diese Zeichen entstehen. "

Weiß nicht weiter

nordy46 11.01.2013 17:47:43

AW: umlaute bei dgssearch
 
Oh WOW nun hab ich`s.

Es liegt an phase 5.

Ich habe noch meine index.htm mit notepad in utf8 hochgeladen und es klappt.

Jetzt muss ich nur noch wissen wie ich phase 5 beibringe, dass die Dateien in utf8
abgespeichert werden.

VIELEN DANK

meikel (†) 11.01.2013 23:45:46

AW: umlaute bei dgssearch
 
Zitat:

Zitat von nordy46 (Beitrag 144232)
Oh WOW nun hab ich`s.
Es liegt an phase 5.
Ich habe noch meine index.htm mit notepad in utf8 hochgeladen und es klappt.

Windows Notepad oder notepad++?
Zitat:

Jetzt muss ich nur noch wissen wie ich phase 5 beibringe, dass die Dateien in utf8 abgespeichert werden.
Achte darauf, PHP Scripte mit UTF-8 Inhalten mit dem Charset UTF-8 OHNE BOM abzuspeichern.
http://de.wikipedia.org/wiki/Byte_Order_Mark
Sonst heißt die nächste Frage: "Wo kommen denn die komischen Zeichen '' her und wie geht das wieder weg?"
Zitat:

VIELEN DANK
Viel Erfolg.

nordy46 12.01.2013 10:34:53

AW: umlaute bei dgssearch
 
Das ganz normale Windows Notepad.
Gibt die Möglichkeit Daten in utf8 abzuspeichern.

Laut Forum ist Phase 5 nicht in der Lage in utf8 abzuspeichern.
Also denkbar ungeeignet für den Umgang mit Umlauten.

Danke nochmal


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:06:14 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.