Question

J'ai un fichier texte encodé en ANSI qui n'aurait pas dû être encodé en tant qu'ANSI car il était accentué caractères non pris en charge par ANSI. Je préférerais travailler avec UTF-8.

Les données peuvent-elles être décodées correctement ou sont-elles perdues lors du transcodage?

Quels outils pourrais-je utiliser?

Voici un exemple de ce que j'ai:

ç é

Je peux dire d'après le contexte (caf & # 195; & # 169; devrait être caf & # 233;) que ces deux caractères doivent être:

ç é
Était-ce utile?

La solution

EDIT: Une simple possibilité à éliminer avant d’entrer dans des solutions plus compliquées: avez-vous essayé de définir le jeu de caractères sur utf8 dans l’éditeur de texte dans lequel vous lisez le fichier? Cela pourrait simplement être le cas de quelqu'un qui vous envoie un fichier utf8 que vous lisez dans un éditeur défini pour dire cp1252.

En prenant juste les deux exemples, c’est le cas où utf8 est lu à travers l’objectif d’un codage à un octet, probablement l’iso-8859-1, l’iso-8859-15 ou cp1252. Si vous pouvez publier des exemples d'autres caractères problématiques, vous devriez pouvoir les affiner davantage.

L'inspection visuelle des caractères pouvant induire en erreur, vous devez également consulter les octets sous-jacents: le & # 167; 0xa7 ou 0xc2a7 peut vous aider à déterminer le type de conversion de jeu de caractères à effectuer.

Pouvez-vous supposer que toutes vos données ont été déformées de la même manière - elles proviennent de la même source et ont subi la même séquence de transformations, de sorte que, par exemple, il n'y a pas un seul & # 233; dans votre texte, c'est toujours & # 195; & # 167 ;? Si tel est le cas, le problème peut être résolu avec une séquence de conversions de jeux de caractères. Si vous pouvez être plus précis sur l’environnement dans lequel vous vous trouvez et sur la base de données que vous utilisez, un membre du personnel ici peut probablement vous expliquer comment effectuer la conversion appropriée.

Dans le cas contraire, si les caractères posant problème ne se produisent qu’à certains endroits de vos données, vous devrez le prendre exemple par cas, en vous basant sur des hypothèses du type "aucun auteur ne veut mettre" & 195; & # 167; Dans leur texte, remplacez-le par "& # 231;" dès que vous le voyez. Cette dernière option est plus risquée, premièrement parce que ces hypothèses sur les intentions des auteurs peuvent être fausses, deuxièmement parce que vous devez repérer vous-même chaque caractère problématique, ce qui pourrait être impossible s'il y a trop de texte à inspecter visuellement ou s'il est écrit dans une langue ou un système d'écriture qui vous est étranger.

Autres conseils

Suivez ces étapes avec Notepad ++

1- Copiez le texte d'origine

2- Dans Notepad ++, ouvrez un nouveau fichier, changez Encodage - > Choisissez un encodage que vous pensez que le texte original suit. Essayez également le codage "ANSI". comme parfois les fichiers Unicode sont lus comme ANSI par certains programmes

3- Coller

4- Puis convertissez-vous en Unicode en retournant dans le même menu: Encodage - > "Encoder en UTF-8" (Pas "Convertir en UTF-8") et, espérons-le, il deviendra lisible

Les étapes ci-dessus s'appliquent à la plupart des langues. Vous devez juste deviner le codage original avant de coller dans notepad ++, puis convertir le même menu en un autre codage Unicode pour voir si tout devient lisible.

La plupart des langues existent sous 2 formes de codage: 1- L'ancien formulaire ANSI (ASCII) hérité, qui ne contenait que 8 bits, était initialement utilisé par la plupart des ordinateurs. 8 bits ne permettaient que 256 possibilités, dont 128 où les caractères latins et de contrôle habituels, les 128 derniers bits étaient lus différemment en fonction des paramètres de langue de l'ordinateur 2- Le nouveau standard Unicode (jusqu'à 32 bits) attribue un code unique à chaque caractère dans toutes les langues actuellement connues et de nombreuses autres à venir. si un fichier est unicode, il doit être compris sur tout PC sur lequel la police de la langue est installée. Notez que même UTF-8 va jusqu'à 32 bits et est aussi large que UTF-16 et UTF-32 seulement, il essaie de rester 8 bits avec des caractères latins juste pour économiser de l'espace disque

Lorsque vous voyez des séquences de caractères telles que ç et à ©, cela indique généralement qu'un fichier UTF-8 a été ouvert par un programme le lisant au format ANSI (ou similaire). Caractères Unicode tels que ceux-ci:

U + 00C2 Lettre majuscule latine A avec circonflexe
U + 00C3 Lettre majuscule latine A avec tilde
U + 0082 Pause permise ici
U + 0083 Pas de pause ici

a tendance à apparaître dans le texte ANSI en raison de la stratégie à octets variables utilisée par UTF-8. Cette stratégie est très bien expliquée ici .

L’avantage pour vous est que l’apparition de ces caractères impairs facilite la recherche et, partant, le remplacement des occurrences de conversions incorrectes.

Je pense que, puisque ANSI utilise toujours 1 octet par caractère, vous pouvez gérer cette situation avec une simple opération de recherche et remplacement. Ou plus commodément, avec un programme qui inclut une table mappant entre les séquences incriminées et les caractères souhaités, comme ceux-ci:

â € œ - > “# Devrait être une citation double bouclée d'ouverture
â €? - > "# Devrait être une citation de fermeture double bouclée

Tout texte, en supposant qu’il soit en anglais, comportera un nombre relativement réduit de types de substitution différents.

L’espoir que cela aide.

Avec vim depuis la ligne de commande:

vim -c "set encoding=utf8" -c "set fileencoding=utf8" -c "wq" filename

Dans l’éditeur de texte sublime, fichier - > rouvrir avec encodage - > choisissez le bon encodage.

Généralement, le codage est détecté automatiquement, mais si ce n’est pas le cas, vous pouvez utiliser la méthode ci-dessus.

Si vous voyez des points d’interrogation dans le fichier ou si les accents sont déjà perdus, revenir à utf8 n’aidera pas votre cause. par exemple. si café devenait un café, changer le codage ne suffira pas (et vous aurez besoin des données originales).

Pouvez-vous coller du texte ici, cela nous aidera certainement à répondre.

Et il y a aussi le programme un peu plus ancien recode .

Certains programmes tentent de détecter le codage d'un fichier tel que chardet . Ensuite, vous pouvez le convertir en un autre encodage en utilisant iconv. Mais cela nécessite que le texte original soit toujours intact et qu'aucune information ne soit perdue (par exemple en supprimant les accents ou les lettres accentuées).

J'ai trouvé un moyen simple de détecter automatiquement les encodages de fichier: changez le fichier en un fichier texte (sur un mac, renommez l'extension .txt) et faites-le glisser vers une fenêtre Mozilla Firefox (ou Fichier - > Ouvrir). . Firefox détectera l’encodage - vous pouvez voir ce qu’il a été créé sous View - > Encodage de caractère.

J'ai modifié l'encodage de mon fichier à l'aide de TextMate une fois que je connaissais l'encodage correct. Fichier - > Rouvrez en utilisant l'encodage et choisissez votre encodage. Ensuite, Fichier - > Enregistrer sous et modifiez le codage en UTF-8 et les fins de ligne en LF (ou ce que vous voulez)

Sous OS X, Synalyze It! vous permet d'afficher des parties de votre fichier selon différents encodages (tous pris en charge par la bibliothèque ICU). Une fois que vous savez quel est le codage source, vous pouvez copier le fichier entier (octets) via le presse-papiers et l'insérer dans un nouveau document où le codage cible (UTF-8 ou ce que vous aimez) est sélectionné.

UnicodeChecker est très utile pour travailler avec UTF-8 ou d'autres représentations Unicode.

J'ai trouvé cette question lorsque je cherchais une solution au problème de page de code que j'avais avec les caractères chinois, mais mon problème était finalement lié au fait que Windows ne les affichait pas correctement dans l'interface utilisateur.

Si quelqu'un d'autre a le même problème, vous pouvez le résoudre simplement en changeant l'emplacement local de Windows en Chine, puis en arrière.

J'ai trouvé la solution ici:

http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/how-can-i-get-chinesejapanese-characters- to / fdb1f1da-b868-40d1-a4a4-7acadff4aafa? page = 2 & amp; auth = 1

La voix de Gabriel a également suscité un vif intérêt: regarder les données dans le bloc-notes ++ était ce qui m'avait prévenu de Windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top