Mysql
 sql >> Database >  >> RDS >> Mysql

normalizzare i caratteri accentati nelle query MySQL

Il motivo dell'errore non è la tabella ma il set di caratteri del tuo input, ovvero il "rené" nella tua query. Il comportamento dipende da character_set_connection variabile:

Usando il client MySQL, cambialo usando SET NAMES :

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

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

Esempio di output:

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)

In alternativa, l'uso può impostare esplicitamente il set di caratteri usando un 'introduttore di set di caratteri':

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)

So che questa domanda è piuttosto vecchia, ma dal momento che Google mi ha portato qui per una domanda correlata, penso che meriti comunque una risposta :)