Introduction

J’ai créé cet outil pour une raison simple. Le faire à la main à chaque fois était épuisant.

CSV issus de systèmes internes, fichiers convertis depuis Excel, configurations exportées depuis Linux, Windows ou des bases de données. Dès que l’origine change, l’encodage, les fins de ligne et le BOM changent aussi.

  • On pense UTF-8, c’est du Shift_JIS
  • On pense LF, c’est du CRLF
  • Certains systèmes exigent le BOM, d’autres cassent avec BOM

Faire ces vérifications/conversions à l’œil ne passe pas à l’échelle. J’ai donc construit un outil qui accepte n’importe quelle origine et normalise la sortie selon le système cible.


Le vrai problème, ce n’est pas un seul fichier corrompu

Si un seul fichier est cassé, on peut souvent le récupérer. Le plus dur, c’est quand 10 ou 100 fichiers arrivent en même temps, avec des origines différentes.

Et chaque système d’import a sa propre définition du « bon format ».

  • Système A : UTF-8 sans BOM uniquement
  • Système B : plus stable en UTF-8 avec BOM
  • Système C : basé sur Shift_JIS ; UTF-8 semble lisible mais l’import échoue

Dans ce cas, le conseil générique « tout passer en UTF-8 » ne sert à rien. Il faut une procédure sûre et reproductible, orientée vers la cible.


Ce que je voulais avec cet outil

Trois principes seulement :

  1. Accepter les fichiers de toute origine
  2. Convertir selon les exigences du système cible
  3. Ne pas augmenter les incidents en traitement par lot

Ce n’est pas une démonstration technique ; c’est un outil pour réduire les frictions d’exploitation.


Procédure que j’utilise réellement

1. Fixer d’abord la spécification de sortie

On part de la sortie, pas de l’entrée. On verrouille ces trois points :

  • Encodage (UTF-8 / Shift_JIS, etc.)
  • Fin de ligne (LF / CRLF)
  • BOM (avec / sans)

Si c’est ambigu, le résultat varie selon l’opérateur.

2. Découper les cibles en petits lots

Ne pas tout lancer d’un coup. Découper par système, période ou type de fichier, puis commencer en petits batches.

Pourquoi : en cas d’échec, on peut revenir en arrière. Un one-shot volumineux n’est rapide que s’il réussit.

3. Geler les paramètres et convertir en lot

Dans le convertisseur d’encodage, fixer les paramètres selon la cible. Ne pas modifier les réglages en cours d’exécution. La clé est la reproductibilité.

4. Ne jamais valider uniquement à l’œil

« Le fichier s’ouvre, donc c’est bon » est une porte d’entrée aux incidents. Au minimum, vérifier :

  • Le nombre de lignes avant/après
  • La stabilité du nombre de colonnes CSV/TSV
  • L’absence d’augmentation de (caractère de remplacement)
  • La conservation de la longueur/type de caractères des colonnes clés (ID/code)

Si ces contrôles échouent, on n’importe pas.


BOM : pas une religion, une exigence de l’autre système

Le débat BOM / pas BOM a peu d’intérêt en exploitation. Ce qui compte, c’est le comportement du système récepteur.

  • S’il est stable avec BOM, sortir avec BOM
  • S’il casse avec BOM, sortir sans BOM

Prioriser « un format qui ne casse pas l’autre côté » plutôt que « le format théoriquement correct ». C’est ça, l’exploitation réelle.


La valeur n’est pas la conversion elle-même

La valeur réelle est double :

  • Les décisions ne varient plus selon la personne
  • Le coût des vérifications répétées diminue

On ne peut pas faire disparaître totalement les incidents d’encodage. Mais on peut arrêter de reproduire les mêmes erreurs. C’est pour cela que j’ai préparé cet outil : tout accepter, puis renvoyer un résultat aligné sur l’usage.


Conclusion

Cet outil n’est pas né d’une théorie idéale. Il est né pour supprimer les ajustements d’encodage pénibles et récurrents du terrain.

Accepter des fichiers d’origines différentes, aligner encodage/fins de ligne/BOM sur la cible, puis renvoyer une sortie cohérente. Automatiser ce flux allège déjà fortement l’exploitation.

Traiter le mojibake ne doit pas reposer sur la volonté individuelle. Il faut une procédure reproductible qui donne le même résultat, quel que soit l’opérateur. C’est à cette condition qu’on peut parler de sauvetage massif en toute sécurité.