Qu'est-ce que node iconv lite (iconv-lite) ?
Une bibliothèque Node.js pure JavaScript pour décoder et encoder des encodages texte historiques (Windows-1252, ISO-8859-1, Shift_JIS, GBK, KOI8-R, etc.) et gérer le BOM sans compiler quoi que ce soit.
Voici les aspects essentiels de node iconv lite à connaître :
1 Encodages classiques pris en charge
Tous les incontournables pour interopérer avec des systèmes hérités.
2 API principale iconv-lite
Une surface simple et prévisible pour convertir en toute sécurité.
3 Cas d'usage fréquents
Ce à quoi vous vous heurtez au quotidien :
4 Points techniques à retenir
Performance et intégration Node.
Problèmes classiques avec les encodages
Mojibake: é, ’, – à l'écran
UTF-8 lu comme ISO-8859-1 (ou inversement). Résolu en décodant correctement avec iconv-lite.
BOM inattendu en tête de fichier
Un BOM UTF-8 peut faire échouer JSON.parse, YAML, ou la lecture d’un .env. À supprimer/ignorer.
Double encodage/décodage
Encoder deux fois ou décoder dans le mauvais ordre produit des artefacts difficiles à voir.
Buffers vs chaînes
Confondre octets et caractères casse les comparaisons et les longueurs réelles.
Exemple de problème courant :
Symptômes qui doivent vous alerter
🚨 Signaux d'alarme
Comment l’adopter dans vos projets Node
✨ Solution recommandée : node iconv lite (iconv-lite)
iconv-lite fournit un décodage/encodage fiable des encodages historiques sans dépendances natives. Installez-le, decodez vos buffers entrants, encodez vos sorties et éliminez immédiatement le mojibake.
✅ Décodage/encodage
CP1252, ISO-8859-1, KOI8-R, GBK, Shift_JIS, Big5, MacRoman…
📊 Écosystème Node
Buffer-friendly, API simple, détection d’encodage disponible via libs tierces
🧹 Gestion du BOM
Ignore/retire le BOM UTF-8 lors du décodage pour des parsings fiables
💾 Streams performants
decodeStream/encodeStream pour traiter de gros fichiers
Autres méthodes pratiques
Réglages d’éditeur
En ligne de commande (Unix)
En code
Node.js (iconv-lite)
const buf = await fs.promises.readFile('input_cp1252.txt')
const s = iconv.decode(buf, 'win1252')
const out = iconv.encode(s, 'utf8')
await fs.promises.writeFile('output_utf8.txt', out)
TypeScript
const exists: boolean = iconv.encodingExists('koi8-r')
const text: string = decode(Buffer.from(bytes), 'koi8-r')
const bin: Buffer = encode(text.normalize('NFC'), 'utf8')
Streams
import iconv from 'iconv-lite'
createReadStream('legacy_sjis.txt')
.pipe(iconv.decodeStream('shift_jis'))
.pipe(iconv.encodeStream('utf8'))
.pipe(createWriteStream('normalized_utf8.txt'))
Convertir proprement et prévenir les erreurs
🚀 Solution rapide avec node iconv lite
Avant de bricoler des conversions maison, installez iconv-lite et standardisez toutes vos entrées/sorties en UTF-8 :
Méthodes techniques avancées
🔧 Normaliser
🧹 Filtrer
⚙️ Automatiser
Checklist rapide
Conclusion
Avec node iconv lite, vous neutralisez rapidement les problèmes d’encodage et fiabilisez vos pipelines texte en Node.js.
Standardisez en UTF-8, gérez le BOM et encodez/décodez systématiquement vos flux: vous éviterez l’immense majorité des bugs de caractères.
Adoptez node iconv lite dès maintenant
Installez iconv-lite, convertissez vos fichiers et dites adieu au mojibake et aux encodages capricieux.
Installer iconv-lite