sql >> Base de Datos >  >> RDS >> Mysql

normalizando caracteres acentuados en consultas MySQL

El motivo del error no es la tabla sino el conjunto de caracteres de su entrada, es decir, el 'rené' en su consulta. El comportamiento depende de la character_set_connection variables:

Usando MySQL Client, cámbielo usando SET NAMES :

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

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

Salida de ejemplo:

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)

Alternativamente, el usuario puede establecer explícitamente el conjunto de caracteres usando un 'presentador de conjunto de caracteres':

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)

Sé que esta pregunta es bastante antigua, pero dado que Google me llevó aquí por una pregunta relacionada, pensé que todavía merece una respuesta :)