[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 -
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 :
Donc là je vois bien que mon fichier est en ascii ..
du coup j'ai testé les commandes suivantes :
sinon j'ai testé aussi ceci :
J'ai essayé plusieurs fois mais rien y fait ...
Si quelqu'un pourait m'aiguiller ! Merci
Google is your friend!
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 foundDonc 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:
- [Shell] Impossible de changer l'encodage
- Changer dns - Guide
- Classic shell - Télécharger - Personnalisation
- Changer de carte graphique - Guide
- Changer extension fichier - Guide
- Changer wifi chromecast - Guide
3 réponses
Hello
Je ne sais pas si ça peut aider :
https://pkgs.org/download/recode
Mais normalement yum install recode aurait du suffire
Je ne sais pas si ça peut aider :
https://pkgs.org/download/recode
Mais normalement yum install recode aurait du suffire
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 ...
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 ...
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 ...
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 ...
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) ...
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) ...
Pour convertir tu peux aussi utiliser vi ...
Tu peux ouvrir tes fichier reconnu comme ASCII dans vi et utiliser la séquence d'échappement :
Puis enregistrer :
Ton fichier sera toujours reconnu comme ASCII par file ...
Si au contraire tu remplaces UTF-8 par ASCII,
tu verras au moment de l'enregistrement un "converti" ...
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 ?
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] : qou
[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 ?
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
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
Je viens d'essayer : yum install encode
et j'ai reçu en retour :
No package encode available.
essaye : yum install recode
Il doit bien exister : http://rpmfind.net/linux/rpm2html/search.php?query=recode
je vois pas pourquoi il ne les trouvent pas ! pourtant tout est bien reliés au net