2009-08-21 11 views
0

Ich habe mit UTF-8-Zeichen in meinem db gearbeitet und habe die php inconv -Funktion benutzt, um Zeichen von utf-8 nach ASCII zu übersetzen, bevor ich sie in die Datenbank setze.Übersetze MySQL-Indizes UTF-8 in ASCII?

So dachte ich, ich würde einfach eine Abfrage in ASCII übersetzen, bevor ich die Datenbank abfrage. Aber jetzt sehe ich Ergebnisse, die mich glauben machen, dass mysql diese Übersetzung für mich macht.

Weiß jemand, ob das stimmt, und ich kann das ganze inconv in php überspringen (was sowieso nicht sehr effektiv ist).

Zum Beispiel gibt eine Suche nach 'lesci' 'Lesci' zurück, was mich zu der Annahme verleitet, dass irgendwann eine Übersetzung nach ASCII stattfindet.

Die Tabelle ist mit utf_8_unicode_ci codiert. Das Feld ist varchar (255) mit einem Volltextindex. Die Abfrage ist ziemlich einfach "SELECT * FROM Benutzer WHERE Name = 'Lësci'" gibt sowohl 'Lësci' und 'Lesci' zurück.

+0

Ich habe es gerade mit MySQL 5.0.75 versucht und es hat kein Problem, wie Sie beschreiben. "Lësci" und "Lesci" passen nur zu den jeweiligen Strings. Können Sie weitere Einzelheiten angeben, z. B. welche Version von MySQL Sie verwenden, und wie lautet Ihre Tabellendefinition und auch ein Beispiel für eine Abfrage, die ein Problem anzeigt? –

+0

Danke Bill, ich benutze MySQL 5.027. Die Tabelle ist mit utf_8_unicode_ci codiert. Das Feld ist varchar (255) mit einem Volltextindex. Die Abfrage ist ziemlich einfach "SELECT * FROM Benutzer WHERE Name = 'Lësci'" gibt sowohl 'Lësci' und 'Lesci' zurück. – pedalpete

+0

Ich kann das beschriebene Verhalten immer noch nicht reproduzieren. Sie haben eine Kollatierung, aber keinen Zeichensatz angegeben. Kannst du bitte einfach das Ergebnis von "SHOW CREATE TABLE users" geben? Was ist der Zeichensatz und die Sortierung Ihrer Sitzung (d. H. Haben Sie einen Befehl "SET NAMES" ausgeführt)? –

Antwort

1

Ich nehme an, Sie verwenden utf8_unicode_ci Sortierung für den Index. Die Kollatierung hat es geschafft. Es wandelt nicht wirklich alles in ASCII um, aber es behandelt die Zuordnung zwischen akzentuiertem und unformatiertem Buchstaben.

Nicht sicher über diese spezifische, utf8_generic_ci kann sie nicht als gleich behandeln, weil ihre Zuordnung viel einfacher ist, daher ist es schneller.

+0

das war was ich dachte, obwohl ich gerade festgestellt habe, dass der Index nicht Volltext ist, nur ein regulärer Index. – pedalpete

Verwandte Themen