praticamente, per farti capire, quando crei un campo nel database, oltre al nome e il tipo puoi determinare il COLLATE, che è il set di caratteri da utilizzare per quel campo
quando nella query aggiungi "WHERE campo COLLATE utf8_unicode_ci = $variabile" non fai altro che cambiare quel valore del campo
purtroppo ho constatato che non funziona proprio con tutti, per esempio Zürich non esce con zurich. esistono infatti piu collate per l'utf8, ecco quali :
utf8_bin
utf8_czech_ci
utf8_danish_ci
utf8_esperanto_ci
utf8_estonian_ci
utf8_general_ci
utf8_hungarian_ci
utf8_icelandic_ci
utf8_latvian_ci
utf8_lithuanian_ci
utf8_persian_ci
utf8_polish_ci
utf8_roman_ci
utf8_romanian_ci
utf8_slovak_ci
utf8_slovenian_ci
utf8_spanish2_ci
utf8_spanish_ci
utf8_swedish_ci
utf8_turkish_ci
utf8_unicode_ci
devo capire se uno di questi va bene per tutti, oppure se devo usarne uno a seconda del caso