MySQL sta convertendo i caratteri UTF-8 nella mia query (non i risultati), eliminando gli accenti?

StackOverflow https://stackoverflow.com/questions/2325764

Domanda

Ho alcuni record in un DB in cui uno dei campi VARCHAR può contenere lettere accentate.Se eseguo la seguente query utilizzando il client CLI MySQL ottengo restituita 1 riga, che è corretta:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%'

Tuttavia, l'utilizzo di PHP (PDO) per eseguire la stessa query restituisce tutte le righe che contengono "em", ma non l'unica riga che contiene "ém".Ancora più stranamente, la registrazione delle query MySQL mostra che la query contiene "é", non "e".

Qualche idea su cosa potrebbe succedere qui?

È stato utile?

Soluzione

Questo dipende da set di caratteri e collazione del database, tabella o colonna.Stai eseguendo la query sulla stessa tabella?

Potresti pubblicare i risultati di

SHOW CREATE TABLE <yourTable>;

Inoltre, puoi specificare le regole di confronto desiderate a livello di query:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%' collate utf8_bin;
-- same as
SELECT site_id, site_name FROM tbl_site WHERE BINARY site_name LIKE '%ém%';

(Nota:Dovresti valutare molto attentamente le prestazioni di tali query)

Altri suggerimenti

IL utf8_general_ci le regole di confronto non fanno distinzione tra maiuscole e minuscole E insensibile all'accento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top