si les deux bases de données sont PG, vous pouvez exporter et importer la base de données tout en utilisant les options de pg_dump pour changer l'encodage ... qu'il
serait probablement le moyen le plus performant pour faire si vous le faites via un râteau tâche, vous pouvez faire le transcoder dans votre râteau tâche ... que cela signifie que vous devrez toucher tous les attributs et ré-encoder ...
comme il semble que votre nouvelle base de données est UTF8 alors que l'ancien est latin1
vous pourriez le faire en ayant toutes les valeurs de type chaîne/texte/texte encodées en utilisant ... vérifier pour répondre à (? g) s'assure que les données ne sont codées que si certaines informations de codage sont jointes, i. e. valeurs numériques transcoder
def transcode(data, toEnc = 'utf8')
if data.respond_to?(:encoding) && data.encoding.name != toEnc
return data.dup.force_encoding toEnc
end
data
end
vous pouvez simplement lire wont un enregistrement de l'ancien db, exécuter par cette méthode et écrire à la nouvelle base de données
u = OldDBUser.first
u.attribute_names.each { |x|
u[x.to_sym] = transcode u[x.to_sym]
}
#... whatever you do with the transcoded u
... eh bien je pas testé ceux-ci, mais s'il vous plaît faire, peut-être son tout ce dont vous avez besoin
0x92 est une bête drôle; http://en.wikipedia.org/wiki/C0_and_C1_control_character suggère que 0x92 est réservé "pour usage interne". Ni http://en.wikipedia.org/wiki/ISO/IEC_8859-1 ni la page de manuel iso-8859-1 de mon système ne donnent d'autre interprétation pour 0x92. Comment 0x92 est-il entré dans la base de données? – sarnold
Les deux bases de données utilisent-elles le même codage? "psql -l" liste les encodages (voir http://www.postgresql.org/docs/8.1/static/multibyte.html). En outre, config.encoding est-il défini sur "utf-8" dans config/application.rb? – seb