Intermédiaire 8 min de lecture 25 janvier 2025

Big5 : encodage, compatibilité et problèmes fréquents

Vous ouvrez un fichier et tout devient illisible, des losanges � apparaissent, un export casse vos colonnes. Très souvent, l’origine est un fichier en Big5 traité comme UTF‑8 (ou l’inverse). Voici l’essentiel pour reconnaître Big5, éviter le mojibake et effectuer des conversions propres.

Qu'est-ce que Big5 ?

Big5 est un jeu de caractères multi‑octets historique pour le chinois traditionnel (Taïwan, Hong Kong), aussi connu sous le nom de code page 950 (CP950 sous Windows).

Voici les points clés à connaître pour travailler avec Big5 :

1 Structure et plages d’octets

ASCII sur 1 octet + caractères chinois sur 2 octets (DBCS).

Lead: 0x81–0xFE, Trail: 0x40–0x7E et 0xA1–0xFE

2 Variantes et extensions

Différentes tables et ajouts selon les plateformes et régions.

CP950 (Windows), Big5-HKSCS, ETen, compatibilité partielle

3 Écarts avec Unicode

Certains caractères n’ont pas d’équivalent direct ou un mappage ambigu.

Caractères non réversibles 1:1
Ponctuation pleine/mi-largeur différente
Possibles divergences selon la variante (HKSCS)

4 Indication d’encodage

Big5 n’a pas de BOM. Il est signalé via les en‑têtes ou balises.

HTTP: Content-Type: text/html; charset=big5
HTML: <meta charset="big5">
DB: collations type big5_chinese_ci

Problèmes classiques

Ouverture Big5 en UTF‑8

Affichage en hiéroglyphes ou caractères �, CSV illisible, pertes de données.

Tests unitaires qui échouent après conversion

Les chaînes converties ne correspondent plus octet pour octet ou contiennent des remplacements.

Fonctions non multi‑octets

strlen/substring sur Big5 donnent des longueurs fausses et coupent au milieu d’un caractère.

Regex et correspondances

Sans support multi‑octets, les classes \w/\s et les ancrages ne se comportent pas comme prévu.

Exemple de problème courant :

# Texte Big5 affiché comme UTF-8
string1 = "繁體中文"
string2 = "���" # Fichier Big5 ouvert en UTF-8
assert string1 == string2 # ❌ Échec (mojibake)

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git montre des changements massifs après “Enregistrer sous” avec un encodage différent
!
Des losanges � ou ��� apparaissent dans les interfaces ou exports
!
Un .env ou un fichier de config refuse un libellé contenant des caractères Big5
!
La barre d’état de l’éditeur indique CP950/Big5 et le rendu HTML est illisible
!
Un copier‑coller en console ajoute des caractères inattendus

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII met en évidence les octets non‑ASCII, repère les schémas typiques de Big5/CP950 et vous aide à préparer une conversion propre vers UTF‑8.

✅ Détection automatique

Octets hors ASCII, motifs DBCS, caractères problématiques

📊 Analyse complète

Positions exactes, occurrences, recommandations de conversion

🧹 Nettoyage automatique

Conversion vers UTF‑8 avec stratégies de remplacement

💾 Export propre

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

Autres méthodes de détection

Affichage dans l'éditeur

Ouvrez/Re-ouvrez le fichier avec “Reopen with Encoding → Big5 (CP950)”
Affichez l’encodage dans la barre d’état et forcez la conversion vers UTF‑8

En ligne de commande (Unix)

# Détecter l'encodage probable
uchardet fichier.txt
# Convertir Big5 → UTF-8
iconv -f big5 -t utf-8 fichier.txt > fichier.utf8.txt
# Repérer des octets hors ASCII (suspects Big5)
grep -P "[^\x09\x0A\x0D\x20-\x7E]" fichier.txt
# Inspecter les octets
hexdump -C fichier.txt

En code

JavaScript

new TextDecoder('big5').decode(bytes)

Python

s = raw_bytes.decode('big5'); s_utf8 = s.encode('utf-8')

Excel / Google Sheets

Import CSV: choisir l'encodage 950 (Big5) dans l'assistant d'import

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire des scripts, utilisez Clean ASCII pour détecter les octets Big5 et préparer une conversion fiable vers UTF‑8.

Détection automatique
Nettoyage intelligent
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Convertissez systématiquement Big5 → UTF‑8 (mb_convert_encoding, iconv)
Uniformisez les en‑têtes HTTP/meta charset pour éviter les incohérences
Convertissez toutes les fins de ligne (dos2unix, gitattributes)

🧹 Filtrer

Utilisez des fonctions multi‑octets (mb_strlen, mb_substr)
Ajoutez un convert_to_utf8() centralisé en entrée
Refusez/assainissez les octets invalides pour Big5 au parsing

⚙️ Automatiser

Hooks pre‑commit pour imposer UTF‑8 et refuser Big5 dans le dépôt
Tests d’encodage sur les inputs utilisateurs et imports fichiers
Vérifications d’encodage dans votre pipeline CI

Checklist rapide

Fichiers en UTF-8 sans BOM
Entêtes HTTP/meta charset cohérents (UTF-8 recommandé)
Éditeur configuré pour afficher et convertir l’encodage (Big5 ↔ UTF-8)
Fonctions multi‑octets (mbstring) utilisées dans vos libs
Tests empêchant le mojibake et les conversions silencieuses
Documentation interne sur Big5, UTF-8 et stratégies de conversion

Conclusion

Big5 reste présent dans des systèmes et fichiers hérités. Savoir l’identifier et le convertir correctement évite des corruptions coûteuses.

Standardisez en UTF‑8, contrôlez vos encodages aux frontières de vos applications et la plupart des problèmes de compatibilité disparaissent.

Vérifiez vos fichiers Big5 dès maintenant

Utilisez notre outil pour repérer les octets non‑UTF‑8 et préparer une conversion Big5 → UTF‑8 sans perte.

Analyser mon texte