IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

KSH - Récupérer l'encodage d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut KSH - Récupérer l'encodage d'un fichier
    Bonjour,

    J'aurais besoin de savoir si c'était possible de récupérer l'encodage d'un fichier (UTF-8, ANSI...) afin d'utiliser dans la foulée la fonction iconv qui basculera mes fichiers en UTF-8 si le fichier ne l'est pas à la base?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Normalement file -i ton_fichier devrait faire l'affaire

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    J'ai le même résultat sur un fichier ANSI et UTF-8 :

    fichier_ansi.csv: regular file
    fichier_utf8.csv: regular file

    Une autre idée?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Re-

    Quel système ?
    Quelle version de file ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ file -v
    file-5.03
    magic file from /usr/share/misc/magic
    
    $ file -i f*
    fichier_ANSI.csv:  text/plain; charset=iso-8859-1
    fichier_UTF-8.csv: text/plain; charset=utf-8

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Système : AIX Version 5.3
    Version de file : Le file -v ne marche pas... donc je ne sais pas

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par Cj_Dal Voir le message
    Système : AIX Version 5.3
    Il aurait peut être été plus judicieux de poster dans la section Unix et non sur GNU/Linux

    Demande à un modo de te rediriger vers le forum adéquat afin d'avoir de meilleures réponses...

    Désolé

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par Cj_Dal Voir le message
    J'ai le même résultat sur un fichier ANSI et UTF-8 :

    fichier_ansi.csv: regular file
    fichier_utf8.csv: regular file

    Une autre idée?
    en général :
    il n'y a pas de fonction qui détermine de manière univoque l'encoding d'un fichier, mais il est possible de faire un "sniffer" qui va déterminer les encodings possibles/probables du fichier, ce n'est pas compliqué mais c'est d'autant plus de travail que d'encodings à supporter…
    (google sur "encoding sniffer"…)
    (NB, pour l'UTF, des BOMs ont été définis mais sont optionnels, si vos fichiers n'en ont pas, vous n'êtes pas plus avancé…)

    en particulier :
    si vous ne devez que déterminer le choix entre 2 encodings , il suffit de tester la présence d'un caractère valable dans l'un et pas dans l'autre… à condition que cela existe (par exemple entre ASCII et UTF-8 tout caractère dont le code est ≥ 128 est illégal en ASCII, mais entre ISO-LATIN-1 et UTF-8, il faut voir si l'une des séquences commençant par un car ≥ 128 est non valide en UTF-8 pour supposer que le fichier est en ISO-LATIN-1 parce que non valide en UTF-8 mais il est possible d'avoir un fichier valide dans les 2 encodings en termes de séquence de bytes…) .

    maintenant en pratique : qu'entendez-vous exactement par ANSI ?
    En termes d'encoding de fichier, le terme ANSI désigne une classe d'encoding pas un encoding particulier… il faut encore le code page (1252 pour Windows, 54936 pour le Chinois simplifié, etc.)

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    En fait je doit partir de l'idée que je ne connais pas l'encodage du fichier sur lequel je dois appliquer un iconv. Hors iconv à besoin qu'on lui propose le format d'origine pour qu'il arrive à faire la conversion vers l'encodage UTF-8 que je veux. A moins que je me trompe, il est peut être possible d'utiliser iconv sans connaître l'encodage d'origine...

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par Cj_Dal Voir le message
    En fait je doit partir de l'idée que je ne connais pas l'encodage du fichier sur lequel je dois appliquer un iconv. Hors iconv à besoin qu'on lui propose le format d'origine pour qu'il arrive à faire la conversion vers l'encodage UTF-8 que je veux. A moins que je me trompe, il est peut être possible d'utiliser iconv sans connaître l'encodage d'origine...
    si iconv ne produit pas d'erreur en tentant de convertir le fichier, c'est qu'il est compatible avec l'encoding proposé dans le "from"
    MAIS
    çà ne voudra pas dire que c'est le seul encoding compatible… et donc que ce soit le "bon"… pour un lecteur humain.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Le problème c'est que je n'arrive pas à trouver un moyen d'obtenir l'encoding à placer dans le FORM, je vais essayer de voir si je peux modifier quelque chose sur le serveur afin de pouvoir utiliser file -i

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Comme on te l'a déjà dit il n'est pas possible de deviner avec certitude l'encodage d'un fichier. Le mieux c'est que tu essaies de faire un iconv avec différent choix "raisonables" pour l'encodage de départ. Si iconv fait une erreur ce n'est pas bon. Si iconv ne fait pas d'erreur ça ne veut pas dire que c'est bon ; il faut encore que tu ailles voir le fichier converti pour voir si le résultat te convient.

    En général il n'y a pas 36 possibilités différentes pour l'encodage d'un fichier. Par exemple si c'est un fichier en français ou en anglais, tu peux essayer ISO-8859-1, ISO-8859-15, CP1252 (utilisé sous Windows), UTF8, UTF16.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/09/2009, 18h18
  2. Récupérer l'encodage d'un Fichier
    Par caballero dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/10/2008, 14h56
  3. [DOM] Récupérer l'encodage d'un fichier xml en php5
    Par Rakken dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/11/2006, 14h31
  4. Récupérer l'icône d'un fichier quelle qu'il soit
    Par medicis dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/03/2003, 17h20
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo