sql >> Databasteknik >  >> RDS >> Mysql

normalisera tecken med accent i MySQL-frågor

Orsaken till felet är inte tabellen utan teckenuppsättningen för din inmatning, det vill säga "rené" i din fråga. Beteendet beror på character_set_connection variabel:

Använd MySQL-klienten, ändra den med SET NAMES :

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

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

Exempelutgång:

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)

Alternativt kan användning uttryckligen ställa in teckenuppsättningen med en "teckenuppsättningsintroducerare":

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)

Jag vet att den här frågan är ganska gammal men eftersom Google ledde mig hit för en relaterad fråga, tror jag att den fortfarande förtjänar ett svar :)



  1. Bästa sättet att ansluta till MySQL med PHP säkert

  2. MySQL INSERT - Kräver fältnamn avgränsning av backtick/accent?

  3. Mappning av en JDBC-resultatuppsättning till ett objekt

  4. Vad är det korrekta indexet för att fråga strukturer i arrayer i Postgres jsonb?