Problème d'encodage de fichier

Bonjour,

J’essaie de générer un fichier ODT (OpenOffice Writer) via un serveur
Rails + Documatic (fait partie de Ruby Reports) qui puise des données
dans une base Oracle, dont l’encodage est soit iso-8859-1, soit
windows-1252 (c’est ce qui marche quand je visualise les données de la
base dans Firefox).

J’ai réussi une première fois à ouvrir le fichier dans OpenOffice
Writer, mais les caractères français (accents, etc.) étaient brouillés.
Ensuite, avec plus de données (et donc potentiellement d’autres
caractères français), le document ne veut plus s’ouvrir, avec le message
d’erreur suivant :

“Erreur de format dans le fichier du sous-document content.xml à la
position…”

Je suppose que c’est un problème d’encodage ? Lors de la transmission du
fichier par le serveur Rails, j’ai essayé de mettre le charset
alternativement à ces deux types d’encodage (exemple : send_file output,
:type => ‘application/vnd.oasis.opendocument.text;
charset=windows-1252’) avec l’encodage correspondant dans OpenOffice,
mais j’obtiens toujours l’erreur.

Quelqu’un a-t-il été confronté à ce problème ?

Merci,

Christophe.

Quelques précisions supplémentaires :

En ouvrant content.xml, j’ai découvert que le caractère qui empêchait le
document de s’ouvrir était °.

Lorsque je le supprime de la base Oracle, le fichier s’ouvre, mais tous
les caractères accentués sont remplacés par des caractères asiatiques !
Pourtant, OpenOffice est encodé en Windows-1252, comme la base (j’ai
vérifié : NLS_CHARACTERSET = WE8MSWIN1252) et le MIME (send_file output,
:type => ‘application/vnd.oasis.opendocument.text;
charset=windows-1252’).

J’ai lu sur un autre forum que lorsque le serveur était Apache, il
fallait lui passer la commande :

export NLS_LANG=.WE8MSWIN1252

Peut-être dois-je faire quelque chose de similaire avec mon serveur
Mongrel ?

Christophe.

Grâce au forum OpenOffice US, j’ai appris que Writer n’était compatible
qu’avec l’UTF-8… Du coup, j’ai pu convertir mes données de
Windows-1252 vers UTF-8 directement dans la requête SQL, grâce à la
fonction “convert”. J’aurais sûrement aussi bien pu faire la conversion
dans Rails…

En espérant que mon expérience pourra servir à d’autres. Je sens que ce
n’est pas la dernière fois que j’aurai à me soucier de problèmes
d’encodage…

Merci,

Christophe.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs