Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Normalisieren von akzentuierten Zeichen in MySQL-Abfragen

Der Grund für den Fehler ist nicht die Tabelle, sondern der Zeichensatz Ihrer Eingabe, also das 'rené' in Ihrer Abfrage. Das Verhalten hängt von der character_set_connection Variable:

Ändern Sie ihn im MySQL-Client mit SET NAMES :

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

(von http://dev.mysql.com/doc /refman/5.5/en/charset-connection.html )

Beispielausgabe:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Alternativ kann use den Zeichensatz explizit mit einem 'Character Set Introducer' setzen:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = _utf8'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Ich weiß, dass diese Frage ziemlich alt ist, aber da Google mich wegen einer verwandten Frage hierher geführt hat, verdient sie immer noch eine Antwort :)