Convertir fichiers ISO-8859-15 en UTF-8 avec l'outil iconv

Utilisation de l’outil iconv pour convertir des fichiers de l’encodage ISO-8859-15 vers UTF-8, ainsi qu’un script Bash pour traiter tout un répertoire de manière automatisée.

Conversion d’un seul fichier

Pour convertir un fichier de l’encodage ISO-8859-15 vers UTF-8 :

iconv -f iso-8859-15 -t utf-8 fichier-ISO.txt > fichier-utf8.txt

Dans le sens inverse, pour repasser un fichier de l’UTF-8 vers ISO-8859-15 :

iconv -f utf-8 -t iso-8859-15 fichier-utf8.txt > fichier-ISO.txt
  • -f (from) spécifie l’encodage source.
  • -t (to) spécifie l’encodage de destination.

Batch conversion (script Bash)

Voici un script pour convertir en lot tous les fichiers d’un répertoire ayant une extension spécifique (ex: .txt, .php) de l’ISO-8859-15 vers l’UTF-8.

#!/bin/sh

usage() {
  echo "Usage : $0 <repertoire> <extension>"
  echo ""
  echo "Convertit en UTF-8 tous les fichiers ISO-8859-15"
  echo "du répertoire spécifié possédant l'extension demandée."
  exit -1
}

# Vérification des arguments
[ $# -ne 2 ] && usage
[ ! -d "$1" ] && echo "Le répertoire '$1' n'existe pas !" && exit -1

rep="$1"
ext="$2"

find "$rep" -type f -name "*.$ext" | while read -r i; do
  echo -n "Conversion de $i ... "
  TMP=$(mktemp)

  # Conversion sécurisée vers le fichier temporaire
  if iconv -f iso-8859-15 -t utf-8 "$i" -o "$TMP" 2>/dev/null; then
    mv "$TMP" "$i"
    echo "OK"
  else
    rm -f "$TMP"
    echo "ERREUR"
  fi
done
Catégories : Linux 
Tags: Astuce Utf-8 

Suggestions de lecture :