Intermédiaire 8 min de lecture 25 janvier 2025

euc jp : encodage japonais, problèmes courants et corrections efficaces

Pages web remplies de symboles bizarres, CSV illisibles, API qui renvoient des points d’interrogation : quand euc jp (EUC-JP) se mélange à UTF-8, les ennuis commencent. Comprendre comment cet encodage fonctionne, où il apparaît encore et comment le convertir proprement permet d’éviter le mojibake et les pertes de données.

Qu'est-ce que euc jp ?

euc jp (EUC-JP) est un encodage historique pour le japonais basé sur EUC, capable de représenter ASCII, katakana demi-chasse et jeux JIS étendus via des octets de tête dédiés.

Les composantes essentielles de euc jp à connaître :

1 ASCII intégré dans euc jp

Les octets 0x20–0x7E restent identiques à l’ASCII, de même que HT, LF, CR.

ASCII: 0x20–0x7E, Tab (0x09), CR (0x0D), LF (0x0A)

2 Octets de contrôle C0/C1

Les plages 0x00–0x1F et 0x7F (DEL) sont des contrôles, à manipuler avec prudence dans les traitements binaires.

NUL (0x00), BEL (0x07), ESC (0x1B), DEL (0x7F)

3 Jeux japonais dans euc jp

Les composantes majeures de EUC-JP et leurs octets indicateurs :

JIS X 0208 (kanji, hiragana, katakana) - 2 octets (0xA1–0xFE)
JIS X 0201 katakana demi-chasse - préfixe 0x8E + 1 octet
JIS X 0212 (jeu complémentaire) - préfixe 0x8F + 2 octets
ASCII direct pour les caractères latins de base

4 Particularités techniques

Points d’attention lors des conversions et analyses :

Aucun BOM en euc jp (à l’inverse d’UTF-16/UTF-32)
Octets de tête: 0x8E (JIS X 0201), 0x8F (JIS X 0212)
Différent de Shift_JIS et ISO-2022-JP, ne pas confondre

Problèmes classiques

Copier-coller depuis une source euc jp

Des octets EUC-JP collés dans un fichier UTF-8 provoquent des glyphes corrompus (mojibake).

Entêtes HTTP ou DB mal configurés

Charset annoncé en UTF-8 mais données en euc jp (ou l’inverse) dans les réponses web ou connexions SQL.

Double encodage ou décodage

Du texte euc jp converti plusieurs fois produit des séquences irrécupérables et des points d’interrogation.

CSV et e-mails mal encodés

Import/export d’anciens systèmes en euc jp qui ne précisent pas le charset, sujets et corps illisibles.

Exemple de problème courant :

# Données qui semblent identiques mais l'encodage diverge
string1 = "カタカナ"
string2 = "カタカナ" # euc jp/UTF-8 mal interprété
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Des caractères japonais deviennent "ã" ou "�" après un commit ou un déploiement
!
Un export CSV perd des colonnes quand les octets euc jp sont lus en UTF-8
!
L’application affiche des "?" à la place des kana ou kanji
!
Votre éditeur propose "Reopen with Encoding" et corrige l’affichage
!
Un copier-coller depuis un système legacy casse les recherches plein texte

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII met en évidence les octets non-UTF-8, les séquences invalides et les mélanges d’encodage. L’outil facilite l’identification des flux en euc jp et propose une conversion sûre vers UTF-8.

✅ Détection automatique

Repère les octets EUC-JP, séquences invalides et incohérences de charset

📊 Analyse complète

Positions exactes, aperçu binaire/hex, suggestions de conversion

🧹 Nettoyage automatique

Conversion vers UTF-8 en conservant au mieux les caractères japonais

💾 Export propre

Téléchargement du texte converti et normalisé prêt à l’emploi

Autres méthodes de détection

Affichage dans l'éditeur

Utilisez "Reopen with Encoding" (VS Code) et testez EUC-JP, Shift_JIS, UTF-8
Activez l’affichage des octets/colonnes et comparez avant/après conversion

En ligne de commande (Unix)

# Rechercher des octets non-ASCII (suspects euc jp)
grep -P "[^\x09\x0A\x0D\x20-\x7E]" fichier.txt
# Deviner l'encodage du fichier
file -bi fichier.txt
# Convertir euc jp vers UTF-8
iconv -f EUC-JP -t UTF-8 fichier.txt > sortie.txt
# Voir les codes hexadécimaux
hexdump -C fichier.txt

En code

JavaScript

/\uFFFD/.test(str) // présence de � après décodage = encodage rompu (souvent euc jp mal lu)

Python

s.encode("euc_jp","strict") # valide/échoue si caractères non représentables

Excel / Google Sheets

CODE(MID(cellule;position;1))

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire des scripts complexes, utilisez Clean ASCII pour repérer les segments en euc jp, voir les séquences invalides et lancer une conversion propre vers UTF-8.

Détection automatique
Nettoyage intelligent
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Convertissez systématiquement euc jp → UTF-8 (iconv, nkf) en entrée
Appliquez une normalisation Unicode NFC/NFKC après conversion
Uniformisez les fins de ligne et les locales système

🧹 Filtrer

Rejetez les entrées dont le charset n’est pas UTF-8 après conversion
Encodez les réponses HTTP avec Content-Type charset=UTF-8
Bloquez les conversions multiples qui créent du mojibake

⚙️ Automatiser

Hooks pre-commit qui refusent des fichiers non UTF-8 (file, uchardet)
Configuration DB: SET NAMES utf8mb4 et collation cohérente
Vérifications d’encodage dans la CI avec conversion et diff binaire

Checklist rapide

Sources converties en UTF-8 sans BOM (euc jp → UTF-8)
En-têtes HTTP et gitattributes définissant le charset
Éditeur configuré UTF-8 par défaut avec affichage des encodages
Fonction utilitaire de conversion euc jp → UTF-8 dans vos libs
Tests vérifiant l’absence de mojibake et la validité UTF-8
Documentation équipe sur euc jp, Shift_JIS, UTF-8 et conversions

Conclusion

euc jp reste présent dans des systèmes hérités et jeux de données historiques. Savoir l’identifier et le convertir fiablement évite le mojibake et les pertes d’information.

Standardisez vos pipelines sur UTF-8, vérifiez les entêtes et automatisez les conversions euc jp pour éliminer durablement les soucis d’encodage.

Diagnostiquez euc jp dans vos fichiers

Utilisez notre outil pour repérer euc jp, corriger l’encodage et obtenir des textes propres en UTF-8.

Analyser mon texte