[Shell] Impossible de changer l'encodage

Résolu/Fermé
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 - Modifié par yacleouf le 11/07/2013 à 16:13
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 12 juil. 2013 à 11:37
Bonjour,
j'essaie de changer l'encodage d'un fichier mais aparemment je dois pas bien m'y prendre ...
J'effectue la manipulation suivante :
file -i monFichier.xml
monFichier.xml: application/xml; charset=us-ascii


Donc là je vois bien que mon fichier est en ascii ..

du coup j'ai testé les commandes suivantes :

recode UTF-8 monFichier.xml
-bash: recode: command not found
Donc là déjà je sais pas pourquoi ça me fait ça ...
sinon j'ai testé aussi ceci :
 iconv -f ascii -t utf8 monFichier.xml > fichierConvertis.xml
 iconv -f ascii -t utf-8 monFichier.xml > fichierConvertis.xml
 iconv -f ascii -t UTF-8 monFichier.xml > fichierConvertis.xml
 iconv -f ascii -t UTF8 monFichier.xml > fichierConvertis.xml

Résultats :

file -i fichierConvertis.xml
fichierConvertis.xml: application/xml; charset=us-ascii


J'ai essayé plusieurs fois mais rien y fait ...
Si quelqu'un pourait m'aiguiller ! Merci



Google is your friend!
A voir également:

3 réponses

guillaume0811 Messages postés 93 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 12 juillet 2013 3
11 juil. 2013 à 16:17
Bonjour,

Il faut que tu installes encode.

Bien à toi.
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
11 juil. 2013 à 16:34
Bonjour,

Je viens d'essayer : yum install encode
et j'ai reçu en retour :
No package encode available.
0
guillaume0811 Messages postés 93 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 12 juillet 2013 3
11 juil. 2013 à 16:39
Excuse moi, je me suis trompé, ton programme s'appelle recode ^^

essaye : yum install recode
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
11 juil. 2013 à 16:41
non j'avais essayé tout à l'heure :)
Loaded plugins: product-id, subscription-manager
Updating Red Hat repositories.
rhel-6-server-cf-tools-1-rpms                                                                                                         | 2.8 kB     00:00
rhel-6-server-rhev-agent-rpms                                                                                                         | 3.1 kB     00:00
rhel-6-server-rpms                                                                                                                    | 3.7 kB     00:00
Setting up Install Process
No package recode available.
Error: Nothing to do
0
guillaume0811 Messages postés 93 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 12 juillet 2013 3
11 juil. 2013 à 16:50
Essaye un yum search recode

Il doit bien exister : http://rpmfind.net/linux/rpm2html/search.php?query=recode
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
11 juil. 2013 à 17:00
hmmm .. je sais pas du coup
je vois pas pourquoi il ne les trouvent pas ! pourtant tout est bien reliés au net
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
11 juil. 2013 à 17:54
Hello

Je ne sais pas si ça peut aider :

https://pkgs.org/download/recode

Mais normalement yum install recode aurait du suffire
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 11/07/2013 à 22:56
Hello,

peut être que les types d'encodages (iconv -l) sont "case sensitive" :

iconv -f US-ASCII -t UTF-8 monFichier.xml > fichierConvertis.xml

... mais en essayant chez moi je constate qu'un fichier ASCII converti en UTF-8 et qui ne comprends aucun caractères ASCII "transformables" en UTF-8 reste en ASCII ...

EDIT : C'est pas case sensitive pour les encode ....
Si tu le transformes en UTF16 (à la place de l'UTF8) là tu devrais voir la différence ... preuve que la commande iconv fonctionne ...

Est ce qu'il ne serait pas plus intéressant d'utiliser la variable LANG de ton système lors de la génération du fichier ou l'encode du xml "<?xml version="1.0" encoding="UTF-8"?>" pour parvenir à tes fins ?

Mais je ne sais pas comment est créé ce fichier, ni ce à quoi tu le destines ...
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
11 juil. 2013 à 22:58
Je pense que ton problème est plus de la programmation que du système ...
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
12 juil. 2013 à 09:48
Bonjour ryko1820,
en effet la commande iconv n'est pas case sensitive ...
Pour t'expliquer un peu mon programme, je reçois plusieurs fichiers xml que je mixe en un seul fichier xml, c'est tout :)
ce que je trouve bizarre c'est que quand je reçois ces xml sur mon serveur ils sont déjà soit en ascii soit en utf-8, et quand je vérifie les balises du xml j'ai bien (<?xml version="1.0" encoding="UTF-8" ?>) donc je pense qu'il y a un soucis à la fois sur l'encodage de base du xml, et sur mon serveur qui ne me permet pas de télécharger recode ...
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 12/07/2013 à 11:26
Hello,

A priori c'est file qui donne de "fausses info". car il se base sur le contenu de ton fichier.

Si il arrive qu'il n'y ait pas de caractères > charcode 128 dans ton fichier il considérera que le fichier est ascii-us

Si au contraire il y a des caractères > au charcode 128 dans ton fichier il considérera que c'est de l'UTF-8

Normalement l'application qui utilisera ton fichier devrait pas voir la différence car elle doit se baser sur l'entête XML qui elle est correcte et comme même tes fichiers, soit disant ASCII-US, sont eux aussi d'un point de vue UTF-8 conformes ...

Ces histoires d'encode sont compliquées, j'espère ne pas dire de bêtise en disant que l'ASCII est "compatible" avec l'UTF-8 car les charcodes qui le constitue sont inclus dedans, alors que le contraire serait impossible ...

Si tu regardes dans tes fichiers ce qui différencie ceux qui sont reconnus en UTF-8 de ceux qui le sont en ASCII tu constateras certainement que c'est la présence de caractères typiquement UTF-8 (accents, etc ...) qui sont absent de ceux reconnu en ASCII.

Il ne manque pas de caractères dans tes fichiers reconnus comme ASCII ?


*******

Pour le problème de l'installation de recode je ne sais pas (tu es bien administrateur ou sudoé ?) ... Le dernier RH que j'ai touché était du CentOS. :)

Sinon tu peux aussi essayer la commande utrac qui manipule aussi les encode...
Elle n'est plus dans les packages officiels Gentoo depuis fin 2012 et je ne sais pas trop ce qu'elle fait, mais peut être que tu peux l'installer sur RH : yum install utrac ? (Ou peut être l'a tu déjà sur ton système) ...
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 12/07/2013 à 11:31
Pour convertir tu peux aussi utiliser vi ...

Tu peux ouvrir tes fichier reconnu comme ASCII dans vi et utiliser la séquence d'échappement :

[echap] : set fileencoding=UTF-8


Puis enregistrer :

[echap] : w


Ton fichier sera toujours reconnu comme ASCII par file ...
Si au contraire tu remplaces UTF-8 par ASCII,

[echap] : set fileencoding=ASCII


tu verras au moment de l'enregistrement un "converti" ...

[echap] : q
ou
[echap] : q!
pour quitter (! sans enregistrer) ...

mais un diff ne montrera aucune différence entre un même fichier UTF-8 et ASCII et cela même au niveau binaire (pour peu que le fichier UTF-8 ne contienne aucun caractère UTF-8)... Partant de là comment file pourrait-il faire la différence ?
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
12 juil. 2013 à 11:29
Merci pour ce complément d'infos !
Effectivement tu as raison concernant le file-i il prend bien en compte que mon fichier est en utf-8 qu esi il y décèle des accents ou autres ...
Je pensais que mon encodage était vraiement pas bon car, dans mon application cible l'intégration des données de mon xml, ce passe mal exemple d'un mots tronqué :
Employé
je vais creuser du coté du parser ... Merci encore !

Concernant les installes sur mon RH, j'ai contacter mon admin, :)
et pour info oui je suis bien root sur le serveur ...

Bon sujet "clos" Merci encore
0