Jump to content

[Charset] Symbole Euro


Recommended Posts

Bonjour à tous, :D

j'ai quelques soucis d'intégration de données liés aux characters set unix/windows. Et je ne sais comment les résoudre.

Voici mon souci :

J'ai un flux xml (fichier texte) sous windows que je dépose sur une machine Unix passerelle via Winscp.

Cette machine passerelle me permet de faire un scp vers ma machine unix devant intégrer mon flux xml.

Résumé :

___WINDOWS___|___PASSERELLE UNIX___|___ MACHINE UNIX___|___BDD___

Fic. xml ------ Winscp ------------> x ------------ SCP ----------> x ----------->Moulinette--------> x

Mon flux xml (fic.xml) contient des données comme le caractères ¤ (Euro) et d'autres caractères accentués.

J'ai donc décidé de passer mon flux xml en UTF-8 afin de pouvoir supporter ces caractères sur dans flux.

Le fichier de départ (sous Windows) est encodé en UTF-8 sur le disque et dans le flux xml, j'ajoute à mon tag <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Et je reprend le transfert de mon flux sur les différentes machines (noté plus haut) ! J'obtiens les valeurs suivantes pour le caractère ¤ (Euro) sur les différents environnement :

-> sous windows : ¤

-> sur machine passerelle : \342\202\254

-> sur machine d'intégration : â~B¬

(valeurs éditées sous vi)

Quand j'intégre ce flux (dans son dernier état donc) en BDD, mon caractère ¤ (euro) est verollé ! Et est ne s'affiche pas correctement ! ;)

J'aimerai savoir si vous avez déjà eu ce genre de souci et comment vous l'avez résolu ?

Ce que j'ai testé :

============

-> Ouverture de ma BDD avec MySQL Query Browser et saisie via cet outil du caractère ¤ (euro) : Ok ! S'affiche bien en BDD ! (la BDD supporte donc bien l'encodage du symbole)

-> Création de mon flux directement "à la mano" sur l'environnement d'intrégration (derniere machine unix) et saisie du caractère ¤ (euro) avec vi. Puis intrégration du flux : Ok ! S'affiche bien en BDD ! (la moulinette d'intégration du flux supporte donc bien mon caractère ¤ (euro)).

-> Création du flux sous windows en UTF-8, tar-gzip de ce flux avec cygwin, envoi à la machine d'intragration via la machine passerelle (cf schéma plus haut) puis détar-gzip du fichier et intégration : Ko ! Le caractère ¤ (euro) en BDD ne s'affiche pas correctement ! (¤)

Et voici quelques questions :yes: relatives à tous ces tests et dont les réponses m'aideraient fortement :

-> Comment peut on connaitre le format d'encodage d'un fichier sous unix ?

-> Est il possible que le fait de passer le fichier de Windows à une machine Unix puis à une autre machine unix par scp fasse perdre l'encoding du fichier ? Dans ce cas, comment meme le contenu d'un tar-gzip peut etre affecté par ce souci ?

->Sous vi, j'ai réussi à saisir le caractère ¤ (sous vim en réalité) avec Ctrl+V 128. Ensuite, quand j'intégre ce fichier, le caractère est bon en BDD. Comment vi encode-t'il les fichiers ? Selon les caractères que l'on a saisi ? ou alors toujours en UTF-8 afin d'etre au maximum compatible ?

-> Lorsque j'édite un fichier sous vi et que je l'enregistre, son format d'encodage (entre avant ouverture et apres enregistrement) peut il changer ?

Enfin, si vous avez quelques infos (forums, outils, docs, howto, ...) concernant l'encoding de fichiers sous unix pouvez vous me les faire partager ? :pleure:

Merci d'avance à tous pour votre aide ! :keskidit:

Guillaume

Link to comment
Share on other sites

Normalement, si tu ne fais que transférer le fichier et que tu ne l'édites pas au passage, l'encodage ne devrait pas changer.

La commande "file" peut te donner l'encodage du fichier (pas toujours, mais en général oui quand c'est du texte)

Sous quel encodage est-tu sur tes machines unix ? (echo $LANG)

C'est du Linux ? Quelle distrib ?

Link to comment
Share on other sites

Merci de ta réponse Gauret !

La commande "file" peut te donner l'encodage du fichier (pas toujours, mais en général oui quand c'est du texte)

Voilà ce que mon shell me répond : fic.xml: XML 1.0 document text

Le pb, c'est que c'est déjà un niveau trop haut pour moi ! Je n'en sais pas plus sur l'encodage ... :zarb:

Sous quel encodage est-tu sur tes machines unix ? (echo $LANG)

fr_FR

Voici les locales relatives à mon environnement (cmd locale) :

LANG=fr_FR

LC_CTYPE="fr_FR"

LC_NUMERIC="fr_FR"

LC_TIME="fr_FR"

LC_COLLATE="fr_FR"

LC_MONETARY="fr_FR"

LC_MESSAGES="fr_FR"

LC_PAPER="fr_FR"

LC_NAME="fr_FR"

LC_ADDRESS="fr_FR"

LC_TELEPHONE="fr_FR"

LC_MEASUREMENT="fr_FR"

LC_IDENTIFICATION="fr_FR"

LC_ALL=

C'est du Linux ? Quelle distrib ?

Je suis sous un shell (bash) unix. Pas de server-X.

Comment peut on connaitre la distrib ? Suis pas un expert en Unix tu sais ... :roll:

Link to comment
Share on other sites

LANG=fr_FR, donc ta distrib est en ISO-8859-1 (Latin-1). Donc c'est normal si VI n'affiche pas le caractère euro.

Pour passer ta distrib en UTF-8, il faut que tu mettes "export LANG=fr_FR.UTF-8" dans un des fichiers de démarrage du shell.

Ensuite il y a peut-être quelquechose d'autre à faire mais pour une LFS je sais pas (sur les distribs basées sur RPM c'est tout, sur Debian il y a un dpkg-reconfigure locales à faire)

Link to comment
Share on other sites

Je pense qu'il faut rester en UTF-8 parce que ta moulinette d'import doit considérer que le fichier est en ISO avant de l'importer, et comme il est en UTF8, ça coince.

Normalement un bon parser XML regarde le charset indiqué dans l'en-tête <?xml encoding="..." ?>

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...