[Shell] Impossible de changer l'encodage

Résolu
yacleouf Messages postés 438 Date d'inscription   Statut Membre Dernière intervention   -  
ryko1820 Messages postés 1677 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   3
 
Bonjour,

Il faut que tu installes encode.

Bien à toi.
0
yacleouf Messages postés 438 Date d'inscription   Statut Membre Dernière intervention   39
 
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   Statut Membre Dernière intervention   3
 
Excuse moi, je me suis trompé, ton programme s'appelle recode ^^

essaye : yum install recode
0
yacleouf Messages postés 438 Date d'inscription   Statut Membre Dernière intervention   39
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   39
 
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 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
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 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
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 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
Je pense que ton problème est plus de la programmation que du système ...
0
yacleouf Messages postés 438 Date d'inscription   Statut Membre Dernière intervention   39
 
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 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
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 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
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   Statut Membre Dernière intervention   39
 
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