# Andere Sprachen - Andere Buchstaben



## deinertsche (14. Januar 2007)

Hallo!

Ich verwende php/mysql mit utf8-Kodierung.

Nun habe ich eine Tabelle mit Spalten, in denen Begriffe aus verschiedenen Sprachen gespeichert werden. Also z.B. Spalten: string_fr, string_tk, string_pl für französische, türkische und polnische Begriffe.

Das Problem besteht nun darin, dass es in diesen Sprachen andere Buchstaben gibt, was für die Speicherung dank utf8 erstmal eigentlich kein Problem ist.

Aber wenn ich dann eine Suche per SELECT mache, dann findet er nur diejenigen, die exakt so geschrieben sind aber nicht diejenigen, die so ähnlich sind, also ein sonderzeichen drin haben.

Beispiel:
in der Datenbank befindet sich ein String namens éèê
Wenn ich nun nach eee suche, dann liefert mysql ein leeres Resultat.
Ich möchte aber dass ein e mit einem Strich drüber genauso gefunden wird wie ein normales e.

Wie würdet ihr dieses Problemlösen? 

Danke!
Deinertsche


----------



## Gumbo (14. Januar 2007)

Hast du schon mal einen „LIKE“-Vergleich probiert, etwa:
	
	
	



```
SELECT
        "éèê" LIKE "eee"
```


----------



## deinertsche (15. Januar 2007)

Ich kenne LIKE nur in der Form:
"SELECT * FROM mytable WHERE myrow LIKE '%mysearch%"'

Wie ist denn die Syntax von einem LIKE-Vergleich wie Du ihn meintest? Hab bei http://dev.mysql.com/doc/refman/5.1/de/string-comparison-functions.html geschaut aber es nicht so recht verstanden.

Also mein suchstring ist z.B. eee und in der spalte myrow gibt es einen Eintrag namens 'éèê', der allerdings utf8-kodiert ist, also 'Ã©Ã¨Ãª'.

Vielen Dank!
Deinertsche


----------



## Gumbo (15. Januar 2007)

deinertsche hat gesagt.:


> […] in der spalte myrow gibt es einen Eintrag namens 'éèê', der allerdings utf8-kodiert ist, also 'Ã©Ã¨Ãª'.


Dann scheinst du eher eine UTF-8-kodierte Zeichenkette in einer Nicht-UTF-8-Spalte zu speichern. Beim Erstellen der Tabelle muss UTF-8 als Zeichenkodierung explizit angegeben werden. (Siehe Festlegen von Zeichensätzen und Sortierfolgen)


----------



## deinertsche (15. Januar 2007)

Du hattest Recht. Vielen Dank! Aber mein ursprüngliches Problem hab ich noch nicht ganz gelöst weil ich nicht weiss wie die Syntax von dem LIKE-Vergleich ist, den Du meintest.

"SELECT * FROM mytable WHERE myrow LIKE '%eee%"'
findet leider nicht den Eintrag éèê in der Spalte myrow.


----------



## Gumbo (15. Januar 2007)

Hast du mal mein Beispiel direkt ausprobiert? Denn diese Abfrage liefert einen booleschen Wert („0“ oder „1“) je nach Erfolg zurück.


----------



## deinertsche (16. Januar 2007)

Ja, habe ich ausprobiert. Es liefert immer eine 0 zurück. (obwohl es eine Spalte gibt, die éèê enthält und die Tabelle jetzt auch utf8 kodiert ist)

Aber selbst wenn es mir eine 1 zurückliefern würde, dann wüsste ich noch nicht, wie die Syntax ist, die mir die korrekte Zeile liefert.

Sorry, dass ich so schwierig bin


----------

