Comment puis-je corriger l'encodage d'un fichier?
J'ai un texte codé en ANSI fichier ne doit pas avoir été encodé en ANSI comme il n'y avait accentué
caractères ANSI ne prend pas en charge. Je préfère travailler avec UTF-8.
Les données peuvent être décodées correctement, ou est-il perdu dans le transcodage?
Quels outils dois-je utiliser?
Voici un échantillon de ce que j'ai:
ç é
Je peux dire à partir du contexte (café devrait être café) que ceux-ci devraient être ces deux personnages:
ç é
- Connaissez-vous l'origine de l'encodage du fichier (en supposant qu'il a été converti à un certain point à partir d'un jeu de caractères à un autre)? Si oui, vous devriez être en mesure à la carte à partir de la résultante des caractères de retour à l'origine des caractères à l'aide de tables comme celui-ci. Si vous ne connaissez pas le codage d'origine, vous pourriez probablement un travail à l'aide d'une approche probabiliste basée sur la fréquence des mots différents dans la langue que vous travaillez avec. Mais vous ne pouvez pas être prêt à mettre dans le travail qu'il faudrait.
- Malheureusement, non, je ne sais pas le codage d'origine. C'est un problème commun lorsque les clients de vous envoyer des fichiers sur une variété de systèmes. Ils ne savent pas ce qu'est un codage de caractères est. Notez que l'adoption croissante des postes de travail Linux à l'aide de l'UTF-8 par défaut, pourrait réduire ce problème de manière transparente.
- Je suis totalement d'accord. UTF-8 est sans doute la plus raisonnable encodage à utiliser dans la plupart des situations, mais on ne peut guère s'attendre à des clients pour comprendre ou de la loi sur que, malheureusement.
Vous devez vous connecter pour publier un commentaire.
EDIT: UNE solution simple pour éliminer avant d'entrer dans plus compliqué solutions: avez-vous essayé de réglage du jeu de caractères en utf8 dans l'éditeur de texte dans lequel vous êtes en train de lire le fichier? Cela pourrait juste être un cas de quelqu'un de vous envoyer un fichier utf8 que vous êtes en train de lire dans un éditeur de jeu-à-dire cp1252.
Juste de prendre les deux exemples, c'est une affaire de utf8 être lu à travers le prisme d'un seul octet codant, probablement l'une de l'iso-8859-1, iso-8859-15, ou cp1252. Si vous pouvez poster d'autres exemples de problème de caractères, il devrait être possible de réduire cette baisse de plus de.
L'inspection visuelle des caractères peut être trompeuse, vous aurez également besoin de regarder le sous-jacent d'octets: le § vous voyez à l'écran peut être soit 0xa7 ou 0xc2a7, et qui permettra de déterminer le type de jeu de caractères de conversion que vous avez à faire.
Pouvez-vous supposer que toutes vos données ont été faussées exactement de la même manière - qu'il est venu à partir de la même source et passé par la même séquence de transformations, de sorte que, par exemple, il n'y a pas un seul é dans votre texte, c'est toujours ç? Si oui, le problème peut être résolu avec une séquence de jeu de caractères de conversions. Si vous pouvez être plus précis sur l'environnement dans lequel vous êtes et la base de données que vous utilisez, quelqu'un ici peut probablement vous dire comment effectuer la conversion.
Sinon, si le problème personnages sont ne se produit que dans certains endroits de vos données, vous aurez à prendre exemple par exemple, basées sur des hypothèses, le long des lignes de "aucun auteur a l'intention de mettre ç dans leur texte, de sorte que chaque fois que vous le voyez, le remplacer par ç". La dernière option est plus risquée, d'abord parce que ces hypothèses sur les intentions des auteurs peut être faux, d'autre part parce que vous aurez à repérer tout problème de caractère vous-même, ce qui pourrait être impossible si il y a trop de texte pour inspecter visuellement ou si c'est écrit dans une langue ou le système d'écriture qui leur est étrangère à vous.
Suivez ces étapes avec Notepad++
1 - Copiez le texte original
2 - Dans Notepad++, ouvrir un nouveau fichier, modifier le Codage -> choisir un encodage-vous que le texte original de la façon suivante. Essayez aussi le codage "ANSI", et parfois, les fichiers Unicode sont lus comme des ANSI par certains programmes
3 - Coller
4 - Ensuite, pour convertir au format Unicode en allant nouveau sur le même menu: Encodage -> "Encoder en UTF-8" (Pas "Convertir en UTF-8") et nous espérons qu'il sera lisible
Les étapes ci-dessus s'appliquent pour la plupart des langues. Vous avez juste besoin de deviner le codage d'origine avant de le coller dans notepad++, puis de les convertir via le même menu à un autre basé sur Unicode codant pour voir si les choses deviennent lisibles.
La plupart des langues existent dans les 2 formes de codage: 1 - L'ancien héritage de l'ANSI (ASCII) forme, à seulement 8 bits, a été initialement utilisé par la plupart des ordinateurs. 8 bits seulement permis 256 possibilités, 128 d'entre eux, là où les latins et les caractères de contrôle, la finale de 128 bits ont été interprétés différemment selon les PC, les paramètres de langue 2 - Le nouveau standard Unicode (jusqu'à 32 bits) donner un code unique pour chaque caractère dans toutes les langues connues et beaucoup plus à venir. si un fichier est au format unicode, il doit être entendu sur n'importe quel PC avec la langue de la police. Notez que même en UTF-8, qui va jusqu'à 32 bits et est tout aussi large que UTF-16 et UTF-32 seulement il tente de rester en 8 bits avec des caractères latins juste pour économiser de l'espace disque
Quand vous voyez des séquences de caractères comme ç é, il est généralement une indication que un fichier UTF-8 a été ouvert par un programme qui lit en ANSI (ou similaire). Les caractères Unicode suivants:
U+00C2 lettre latine majuscule avec accent circonflexe
U+00C3 lettre latine majuscule avec Un tilde
U+0082 Pause autorisée ici
U+0083 Pas de pause ici
ont tendance à apparaître dans le texte ANSI en raison de la variable d'octets de la stratégie que de l'UTF-8 utilise. Cette stratégie est très bien expliqué ici.
L'avantage pour vous est que l'apparition de ces étranges personnages rend relativement facile à trouver, et donc les remplacer, les instances de conversion incorrecte.
Je crois que, depuis ANSI utilise toujours 1 octet par caractère, vous pouvez gérer cette situation avec une recherche simple-et-opération de remplacement. Ou de façon plus pratique, avec un programme qui comprend une table de correspondance entre la délinquance des séquences et les caractères souhaités, comme celles-ci:
“ -> “ # doit être une ouverture double bouclés devis
â€? -> ” # doit être un double de fermeture bouclés devis
Un texte donné, en supposant que c'est en anglais, aura un relativement petit nombre de différents types de substitutions.
Espère que ça aide.
Avec vim en ligne de commande:
Utiliser iconv - voir Le meilleur moyen de convertir des fichiers de texte entre les jeux de caractères?
Sublime éditeur de texte, fichier -> rouvrir avec le codage -> choisir le bon encodage.
Généralement, l'encodage est détectée automatiquement, mais si pas, vous pouvez utiliser la méthode ci-dessus.
Si vous voyez un point d'interrogation dans le fichier ou si les accents sont déjà perdu, le retour à l'utf8 ne va pas aider votre cause. par exemple, si le café est devenu le café - modification de l'encodage n'aideront pas (et vous aurez besoin de données d'origine).
Pouvez-vous coller un texte, qui va nous aider à répondre à coup sûr.
Et puis il ya la un peu plus âgés recode programme.
Il y a des programmes qui tentent de détecter l'encodage d'un fichier comme chardet. Ensuite, vous pouvez le convertir en un autre encodage à l'aide de iconv. Mais cela nécessite que le texte original est toujours intacte et aucune information n'est perdue (par exemple en supprimant les accents ou à l'ensemble des lettres accentuées).
J'ai trouvé un moyen simple de détecter automatiquement le fichier de codages - modifier le fichier dans un fichier texte (sur un mac renommer l'extension de fichier .txt) et faites-le glisser vers un Mozilla Firefox fenêtre (ou un Fichier -> Ouvrir). Firefox détecte l'encodage, vous pouvez voir ce qu'il a sous la Vue -> Encodage des Caractères.
J'ai changé de codage du fichier à l'aide de TextMate une fois que je savais que l'encodage correct. Fichier -> Rouvrir en utilisant l'encodage et choisissez votre encodage. Puis Fichier -> Enregistrer sous et changer le codage UTF-8 et les fins de ligne de LF (ou ce que vous voulez)
Sur OS X Synalyze Il! permet d'afficher des parties de votre fichier dans les différents encodages (qui sont tous pris en charge par le service des soins intensifs de la bibliothèque). Une fois que vous savez quelle est la source de l'encodage, vous pouvez copier l'ensemble du fichier (en octets) via le presse-papiers et l'insérer dans un nouveau document dans le cas où la cible de l'encodage (UTF-8 ou ce que vous voulez) est sélectionné.
Très utile lorsque vous travaillez avec de l'UTF-8 ou Unicode représentations est UnicodeChecker
J'ai trouvé cette question lors de la recherche d'une solution à une page de code de problème que j'ai eu avec des caractères Chinois, mais à la fin, mon problème était juste un problème avec Windows affiche pas correctement dans l'INTERFACE utilisateur.
Au cas où quelqu'un d'autre a le même problème, vous pouvez résoudre le problème en changeant simplement le local dans windows à la Chine et ensuite de retour à nouveau.
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&auth=1
Aussi upvoted Gabriel réponse en regardant les données dans notepad++ était ce bout de moi sur windows.