{"id":134,"date":"2006-11-10T14:25:20","date_gmt":"2006-11-10T13:25:20","guid":{"rendered":"http:\/\/almin.tf\/blog\/?p=134"},"modified":"2020-05-03T14:36:37","modified_gmt":"2020-05-03T13:36:37","slug":"conversion-latin9-utf8","status":"publish","type":"post","link":"https:\/\/almic.fr\/blog\/2006\/11\/10\/conversion-latin9-utf8\/","title":{"rendered":"Conversion du latin9 vers l&rsquo;utf8"},"content":{"rendered":"<p style=\"text-align: justify;\">A priori ce devrait \u00eatre la derni\u00e8re migration de ce genre, et c&rsquo;est tant mieux car c&rsquo;est une vraie plaie : tous les accents dans les noms de fichiers et dans les fichiers eux-m\u00eames, massacr\u00e9s ! Voil\u00e0 de quoi y rem\u00e9dier.<\/p>\n<p><!--more--><\/p>\n<h4>Installation d&rsquo;Utrac, Universal Text Recognizer and Converter<\/h4>\n<p style=\"text-align: justify;\">Pour commencer, rendez-vous sur le <a href=\"http:\/\/utrac.sourceforge.net\">site d&rsquo;Utrac<\/a> pour le t\u00e9l\u00e9charger et l&rsquo;installer (make puis make install en root).<\/p>\n<h4>Les noms de fichiers<\/h4>\n<p>Pour les noms de fichiers, cr\u00e9ez ce script :<\/p>\n<pre>for I in `ls -A`\r\ndo\r\n  nom=`basename $I`\r\n  nnom=`echo $nom | utrac`       # Convertir en UTF8\r\n  if [ \"$nom\" != \"$nnom\" ]       # Renomme seulement si n\u00e9cessaire\r\n  then\r\n    mv $nom $nnom\r\n  fi\r\n  if test -d \"$nnom\"             # Si c'est un r\u00e9pertoire, on descend\r\n  then\r\n    cd $nnom\r\n    latin2utf\r\n    cd ..\r\n  fi\r\ndone<\/pre>\n<h4>Noms de fichiers et leur contenu<\/h4>\n<p style=\"text-align: justify;\">Si on veut convertir aussi le contenu des fichiers :<\/p>\n<pre>for I in `ls -A`\r\ndo\r\n  nom=`basename $I`\r\n  nnom=`echo $nom | utrac`        # Convertir en UTF8\r\n  if [ \"$nom\" != \"$nnom\" ]        # Renomme seulement si n\u00e9cessaire\r\n  then\r\n    mv $nom $nnom\r\n  fi\r\n  if test -d \"$nnom\"              # Si c'est un r\u00e9pertoire, on descend\r\n  then\r\n    cd $nnom\r\n    latin2utf-contenu\r\n    cd ..\r\n  fi\r\n  if [ -f \"$nnom\" ]                     # Si c'est un fichier, on convertit...\r\n  then\r\n    test=`utrac $nnom >\/dev\/null 2>\/dev\/null ; echo $?`\r\n    if [ $test = \"0\" ]                  # ...si utrac peut convertir\r\n    then\r\n      utrac $nnom > tampon\r\n      mv tampon $nnom\r\n      rm tampon\r\n    fi\r\n  fi\r\ndone<\/pre>\n<p style=\"text-align: justify;\">Pour quelques fichiers \u00e7a ne marche pas, j&rsquo;utilise alors recode :<\/p>\n<p><code>% recode latin9..utf8 FICHIER<\/code><\/p>\n<h4>Casse et capitalisation<\/h4>\n<p style=\"text-align: justify;\">Tant qu&rsquo;on y est, voil\u00e0 un script qui capitalise la premi\u00e8re lettre des noms de fichiers, qui passe les r\u00e9pertoires en minuscules et qui enl\u00e8ve le bit d\u2019ex\u00e9cution pour les fichiers. Ce dernier est d\u00e9sagr\u00e9able quand on utilise l\u2019option color de ls.<\/p>\n<pre>#!\/bin\/bash\r\nfor I in `ls -A`\r\ndo\r\n  if test -d \"$I\"                       # Si c'est un r\u00e9pertoire, on descend\r\n  then\r\n    chmod 755 $I\r\n    cd $I\r\n    casse\r\n    pwd\r\n    cd ..\r\n    nom=`basename $I`                   # On passe en minuscules\r\n    nnom=`echo $I | tr 'A-Z' 'a-z'`\r\n    if [ \"$nom\" != \"$nnom\" ]            # Renomme seulement si n\u00e9cessaire\r\n    then\r\n      mv $nom $nnom\r\n    fi\r\n  else\r\n    chmod 644 $I\r\n    if file $I |grep executable >\/dev\/null\r\n    then\r\n      chmod 755 $I\r\n    fi\r\n    nom=`basename $I`                   # On capitalise\r\n    nnom=`echo -n ${I:0:1} |tr 'a-z' 'A-Z' ; echo ${I:1} | tr 'A-Z' 'a-z'`\r\n    if [ \"$nom\" != \"$nnom\" ]            # Renomme seulement si n\u00e9cessaire\r\n    then\r\n      mv $nom $nnom\r\n    fi\r\n  fi\r\ndone<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A priori ce devrait \u00eatre la derni\u00e8re migration de ce genre, et c&rsquo;est tant mieux car c&rsquo;est une vraie plaie : tous les accents dans les noms de fichiers et dans les fichiers eux-m\u00eames, massacr\u00e9s ! Voil\u00e0 de quoi y rem\u00e9dier.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-134","post","type-post","status-publish","format-standard","hentry","category-systeme","radius"],"_links":{"self":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":8,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":323,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions\/323"}],"wp:attachment":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/media?parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/categories?post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/tags?post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}