RE: Problema con codificación de c aracteres - Reaparecen

Hola de nuevo,

Pensaba que mis problemas estaban solucionados pero no es así aunque
ahora creo que se de donde viene realmente el problema. Les cuento:

Desde la consola de ruby puedo realizar sin problemas la siguiente
instrucción:
Album.create(:cover_url => nil, :name => ‘Los Sueños Locos’,:catalog_id
=> 1)
Que según el log implica la siguiente sentencia en la base de datos:
INSERT INTO albums (cover_url, name, catalog_id, updated_at,
created_at) VALUES(NULL, ‘Los Sueños Locos’, 1, ‘2008-03-24
18:02:50’, ‘2008-03-24 18:02:50’)

Pero en mi aplicación rails, que recibe los campos para crear el album a
través de una petición xml, no se crea el album y el log indica lo
siguiente:
Mysql::Error: Incorrect string value: ‘\xF1os Lo…’ for column ‘name’
at row 1 INSERT INTO albums (cover_url, name, catalog_id,
updated_at,
created_at) VALUES(NULL, ‘Los Sueños Locos’, 1, ‘2008-03-24
18:02:50’, ‘2008-03-24 18:02:50’)

Como veís la sentencia es la misma, salvo el tema de los timestamps que
serían diferentes (en este caso es un cut and paste) . Realmente no
entiendo mu bien que puede estar pasando ya que como dije esa sentencia
se ejecuta correctamente también en una consola con mysql.

Lo que he conseguido hacer para que no me ocurra este problema a sido
desinstalar la gema de mysql (gem uninstall mysql) y la cosa ha
funcionado sorprendente. Y estaría bien averiguar porque ha ocurrido
esto pero no se como investigarlo, ya que, he leído que es recomendable
la utilización de esa gema por temas de rendimiento al menos en sistemas
windows.

Un saludo y gracias por aguantar estos 3 posts.

         Solucionado al parece el problema venía dado de la configuración del fichero database.yml donde asignaba la propiedad encoding: utf8 y al parece no es necesario y >además es perjudicial ya que no funcionaba de ese modo. 

¿Se os ocurre porque pasaba todo esto? Porque en todos sitios uso codificación utf8

Hola,

Pero en mi aplicación rails, que recibe los campos para crear el
album a través de una petición xml, no se crea el album y el log
indica lo siguiente:
Mysql::Error: Incorrect string value: '\xF1os Lo...' for column
'name' at row 1 INSERT INTO `albums` (`cover_url`, `name`,
`catalog_id`, `updated_at`, `created_at`) VALUES(NULL, 'Los Sueños
Locos', 1, '2008-03-24 18:02:50', '2008-03-24 18:02:50')

Si los campos te llegan en un XML, y tú estás seguro de que tu base de
datos está bien configurada para UTF-8, entonces es probable que el XML
que te llega tenga una codificación que no sea utf8. ¿Quién te lo manda?
¿estás seguro de que va en utf8?. Si no lo es, puedes convertirlo con
Iconv.conv a UTF8 antes de intentar guardarlo.

Y que no se te olvide volver a poner el encoding: utf8 en el
database.yml. Quitarlo es bastante mala idea. Si lo quitas estás
engañando al objeto connection, y eso seguro que no es lo que quieres.

suerte,

javier ramírez