Problème d'encodage de caractères exportant des données de rails vers CSV
Je suis exportation de données vers un fichier CSV dans les rails et dans certains de mes champs, je suis de codage des caractères les questions de ce genre quand j'ai ouvert dans Excel:
didn’t
J'ai emprunté ce code à partir d'un exemple, et je suis en supposant que l'encodage est à l'arrêt. Aucune idée de ce qu'elle devrait être?
send_data csv_data,
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=#{filename}.csv"
source d'informationauteur Slick23 | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
Lorsque Excel ouvre le fichier CSV juste suppose un "iso-8859-1" l'encodage des caractères. Je suppose qu'il ne sait même pas à propos de l'encodage de l'information que vous envoyez à l'intérieur de votre réponse HTTP. C'est pourquoi la définition de cette UTF-8 ne fonctionne pas.
Afin d'exporter vos fichiers CSV pour Excel dans les Rails, vous pourriez faire ceci:
Cette ré-encode vos données UTF-8 chaîne (c'est les Rails par défaut) à la norme ISO-8859 et l'envoie. Le long va les informations que cette réponse est en fait la norme ISO-8859-1 codées (ce qui n'est pas de faire une différence pour Excel, mais est techniquement correcte, si vous devez l'ouvrir dans un navigateur, etc.).
Cela a fonctionné pour moi, avec des caractères Chinois!excel csv obtenues (BOM + UTF8)
source(Chinois): http://blog.inheart.tw/2013/09/rubyraisl-csv-excel.html
Les réponses ci-dessus n'a pas fonctionné pour moi sur Mac Excel:
À l'aide de
iso-8859-1
exigerait-je remplacer/supprimer des caractères bizarres, qui n'est pas une très bonne solution pour moi, et à l'aide deBOM
avecUTF8
travaillé sous Windows mais pas sous Mac Excel.Ce qui a fonctionné pour moi, c'est le
WINDOWS-1252
de codage tel que suggéré par https://stackoverflow.com/a/20194266/226255C'est mon approche à l'aide de
I18n.transliterate
:I18n.transliterate
supprime juste des personnages étranges, et tente de les rendre lisibles (par exemple, il remplaceraá
aveca
ö
aveco
etc). Juste lui donner un essai.