MySQL UPPER() und LOWER() funktionieren nicht mit utf-8-Zeichen
Ich habe eine Suchfunktion, ich will, dass es groß-und Kleinschreibung, einschließlich Zeichen wie éüò etc.
So, ich Transformiere die Eingabe in Großbuchstaben umwandeln, bevor Sie eine Abfrage der Datenbank. Aber MySQL nicht konvertieren die Sonderzeichen richtig.
SELECT * FROM items WHERE UPPER(description) = $input
Ich habe MySQL 5.1.32, ich habe versucht, verschiedene Sortierungen, aber keines scheint richtig zu arbeiten. Gleiche mit LOWER().
CREATE TABLE `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`description` text CHARACTER SET utf8 COLLATE utf8_bin,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=187 DEFAULT CHARSET=utf8"
Feld Beschreibung enthält 'hellö'. Mysql wandelt Sie um in 'HELLö'. Ich will 'HELLÖ'.
Poste bitte die Ausgabe von
Fertig! (auch geändert, um das Feld Beschreibung statt name)
Sie sind mit
SHOW CREATE TABLE items
, der Wert der $input
und der Wert der name
Sie erwarten, zu entsprechen.Fertig! (auch geändert, um das Feld Beschreibung statt name)
Sie sind mit
UTF8_BIN
die groß-und Akzent. Verwenden UTF8_GENERAL_CI
statt.InformationsquelleAutor Henk de Slager | 2010-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese funktioniert bei mir:
UPPER("Eyjafjallajökull")
zurückEYJAFJALLAJöKULL
Aber auf den zweiten Gedanken, natürlich legt seine ursprüngliche Forderung also +1 🙂
Komisch, das funktioniert auch für mich. Auch mit MyISAM statt InnoDB. Ich verstehe nicht den Unterschied.
Anscheinend ist der Inhalt im Feld waren nicht das, was ich dachte, Sie waren, obwohl Sie erschien direkt in html. Hoppla!
InformationsquelleAutor Quassnoi