/ / Caratteri speciali MySQL quando si esegue una SELECT mostra altri risultati senza caratteri speciali: mysql, ruby-on-rails, codifica caratteri, caratteri speciali

I caratteri speciali di MySQL quando si esegue una SELECT mostra altri risultati senza caratteri speciali: mysql, ruby-on-rails, character-encoding, caratteri speciali

Abbiamo un tavolo con un paio di centinaia di tag. Alcuni di loro hanno caratteri speciali (caratteri spagnoli). E alcuni di questi tag potrebbero contenere le stesse lettere, ma non esattamente la stessa stringa con e senza i caratteri speciali.

Lasciami mostrare un esempio:

 select * from tags where name = "olga tañón";

Mi aspetterei di ottenere nel risultato la riga specifica che ha "olga tañón", ma invece MySQL mi sta dando come risultato:

 olga tañón
olga tañon
olga tanon

Si noti che sono le stesse lettere, ma alcuni di loro hanno i caratteri speciali (ñ e ó) e altri no. La codifica della tabella è latin 1. Usiamo Rails 3.2 e MySQL 5.x

Ecco un codice di esempio

 Tag.where(:name => "olga tañón")
Tag Load (94.6ms)  SELECT `tags`.* FROM `tags` WHERE `tags`.`name` = "olga tañón"
=> [#<Tag id: 57502, name: "olga tañón">, #<Tag id: 75642, name: "olga tañon">, #<Tag id: 114622, name: "olga tanon">]

Cosa potremmo fare se vogliamo ottenere la stringa esatta restituita nel risultato SELECT quando eseguo una query con caratteri speciali.

Grazie!

risposte:

3 per risposta № 1

Penso che sia necessario specificare le regole di confronto: guarda questo http://code.openark.org/blog/mysql/mysqls-character-sets-and-collations-demystified e questo http://dev.mysql.com/doc/refman/5.6/en/charset-collation-charset.html e questo http://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html