Le meilleur moyen de convertir des fichiers de texte entre les jeux de caractères?
Quelle est la manière la plus rapide et la plus simple méthode ou outil pour convertir des fichiers texte entre les jeux de caractères?
Plus précisément, j'ai besoin de les convertir en UTF-8 en ISO-8859-15 et vice versa.
Tout va: one-liners dans votre langage de script favori, outils de ligne de commande ou d'autres utilitaires de système d'exploitation, sites web, etc.
Meilleures solutions à ce jour:
Sur UNIX/Linux/OS X/cygwin:
-
Gnu iconv suggéré par Troels Arvin est mieux utilisé comme un filtre. Il semble être universellement disponibles. Exemple:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
Comme l'a souligné Ben, il y a un convertisseur en ligne à l'aide de iconv.
-
Gnu recode (manuel) proposé par Cheekysoft va convertir un ou plusieurs fichiers à la place. Exemple:
$ recode UTF8..ISO-8859-15 in.txt
Celui-ci utilise la plus courte alias:
$ recode utf8..l9 in.txt
Recode prend également en charge surfaces qui peut être utilisé pour convertir entre les différents caractères de fin de ligne et types de codages:
Convertir les sauts de ligne de LF (Unix) pour CR-LF (DOS):
$ recode ../CR-LF in.txt
Base64 encode fichier:
$ recode ../Base64 in.txt
Vous pouvez également les combiner.
Convertir un encodées en Base64 UTF8 fichier avec des fins de ligne Unix en Base64 Latin 1 fichier avec le Dos de fins de ligne:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
Sur Windows avec Powershell (Jay Bazuzi):
-
PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt
(Pas de ISO-8859-15 soutien; il dit qu'pris en charge les jeux de caractères unicode, utf7, utf8, utf32, ascii, bigendianunicode, par défaut, et oem.)
Modifier
Voulez-vous dire iso-8859-1? À l'aide de "Chaîne" est-ce par exemple pour les vice versa
gc -en string in.txt | Out-File -en utf8 out.txt
Remarque: Le possible des valeurs d'énumération sont "Inconnus", Chaîne de caractères, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".
- CsCvt - Kalytta Jeu de Caractères du Convertisseur est une autre grande base de ligne de commande de l'outil de conversion pour Windows.
- J'ai essayé
gc -en Ascii readme.html | Out-File -en UTF8 readme.html
mais il convertit le fichier en utf-8 mais il est vide! Notepad++ dit que le fichier est au format Ansi, mais la lecture de ce que je comprends c'est même pas valide charset?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExF - Il suffit de venir à travers cette recherche d'une réponse à une question connexe - excellent résumé! Juste pensé qu'il était utile d'ajouter que
recode
va agir comme un filtre si vous ne passez pas tout les noms de fichiers, par exemple:recode utf8..l9 < in.txt > out.txt
- iconv.com/iconv.htm semble être mort pour moi? (timeout)
- Si vous utilisez
enca
, vous n'avez pas besoin de spécifier l'encodage en entrée. Il est souvent assez juste de spécifier la langue:enca -L ru -x utf8 FILE.TXT
. - En fait, iconv beaucoup mieux fonctionné comme un convertisseur au lieu d'un filtre. La conversion d'un fichier avec plus de 2 millions de lignes à l'aide de
iconv -f UTF-32 -t UTF-8 input.csv > output.csv
enregistré seulement environ sept cent mille lignes, seul un tiers. À l'aide de la versioniconv -f UTF-32 -t UTF-8 file.csv
converti avec succès toutes les 2 millions, plus de lignes. - "codage ISO-8859-1" ne fonctionne pas pour moi, son "ISO8859-1"... si vous voulez voir al encodigns disposition pour transformer, il suffit de taper dans la console
iconv -l
... merci pour l'aide find httpdocs -type f -exec recode ISO-8859-15..UTF8 {} \;
et vous prie de ne pas avoir de problèmes avec les images.- Merci beaucoup pour le résumé. Beaucoup mieux que les réponses à mon humble avis.
- iconv reconnaît 8859_1, ISO-8859-1, ISO8859-1, UTF88591, ISO_8859-1 (de même pour d'autres codages de caractères ISO 8859). Vérifié avec iconv 2.27 (Ubuntu)
Vous devez vous connecter pour publier un commentaire.
Utilitaire autonome approche
Vous n'avez pas à spécifier l'une de ces arguments. Ils seront par défaut de vos paramètres régionaux en cours, qui est généralement de l'UTF-8.
iconv -l | grep UTF
vous dira tout de l'UTF-liées encodages que votre copie de iconv prend en charge.chardet in.txt
pour générer une meilleure estimation. Le résultat peut être utilisé comme un système d'ENCODAGEiconv -f ENCODING
.illegal input sequence at position
messages), et de remplacer "bizarre", les caractères avec "similaires" des personnages:iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT in.txt > out.txt
.ex
) ci-dessous. Informations supplémentaires: (1) vous (probablement) n'avez pas besoin de spécifier le-f
(à partir de) option aveciconv
. (2) lefile --mime-encoding <file/s>
commande peut vous aider à comprendre le codage en premier lieu.file
commande signalé ma source que de l'UTF-16 Little Endian; l'exécution d'iconv -f UTF-16 -t UTF-8...
transformé de façon incorrecte à l'ASCII, j'ai dû le spécifier explicitementiconv -f UTF-16LE...
à la sortie de l'UTF-8Essayez VIM
Si vous avez
vim
vous pouvez utiliser ceci:Pas testé pour chaque encodage.
La partie la plus cool à ce sujet est que vous n'avez pas à connaître la source de l'encodage
Être conscient que cette commande modifier directement le fichier
Explication de la partie!
+
: Utilisé par vim pour entrer directement la commande au moment de l'ouverture d'un fichier. Généralement utilisé pour ouvrir un fichier à une ligne spécifique:vim +14 file.txt
|
: Séparateur de plusieurs commandes (comme;
en bash)set nobomb
: non utf-8 BOMset fenc=utf8
: Établir de nouvelles codage utf-8 doc lienx
: Enregistrer et fermer le fichierfilename.txt
: chemin d'accès au fichier"
: qotes sont ici à cause de tuyaux. (sinon bash s'en bash pipe)vim -b
ouhead file.txt|cat -e
find -regextype posix-extended -type f -regex ".*\.(h|cpp|rc|fx|cs|props|xaml)" -exec vim +'set nobomb | set fenc=utf8 | x' {} \;
Sous Linux, vous pouvez utiliser le très puissant recode de commande pour convertir entre les différents jeux de caractères ainsi que toutes les questions de fin de ligne. recode -l vous montrera tous les formats et les codages que l'outil peut convertir entre. Il est susceptible d'être une TRÈS longue liste.
iconv(1)
Aussi il y a iconv-en fonction des outils dans de nombreuses langues.
La version la plus courte, si vous pouvez supposer que l'entrée de la NOMENCLATURE est correct:
gc .\file-utf8.txt | sc -en utf7 .\file-utf7.txt
Set-Content
fonctionnent mieux queOut-File
?file-utf8.txt
fichier d'entrée, car ils avaient tous les deux le même fichier de sortie commefile-utf7.txt
.gc -en Ascii readme.html | Out-File -en UTF8 readme.html
mais il convertit le fichier en utf-8 mais il est vide! Notepad++ dit que le fichier est au format Ansi, mais la lecture de ce que je comprends c'est même pas valide charset?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFEssayer iconv Bash fonction
Je l'ai mis dans
.bashrc
:..pour être en mesure de convertir les fichiers comme suit:
Essayer De Notepad++
Sur Windows, j'ai pu utiliser Notepad++ pour faire la conversion de ISO-8859-1 à UTF-8. Cliquez sur
"Encoding"
et puis"Convert to UTF-8"
.Oneliner l'aide de la recherche, avec le jeu de caractères de détection
L'encodage des caractères de tous les fichiers texte obtient automatiquement détecté et tous les fichiers texte sont convertis à
utf-8
encodage:Pour effectuer ces étapes, un sous-shell
sh
est utilisé avec-exec
, l'exécution d'un one-liner avec le-c
drapeau, et en passant le nom de fichier de position argument"$1"
avec-- {}
. Entre les deux, leutf-8
fichier de sortie est temporairement nomméconverted
.Lequel
fichier -bi
signifie:-b
,--brief
Ne pas préfixer les noms de fichiers pour les lignes de sortie (brève mode).
-i
,--mime
Les Causes de la commande de fichier de sortie type mime chaînes de caractères plutôt que les plus traditionnels, lisible par les autres. Ainsi, il peut dire par exemple
text/plain; charset=us-ascii
plutôt queASCII text
. Lesed
commande coupe à seulementus-ascii
comme il est requis pariconv
.La
find
de commande est très utile pour le fichier de gestion de l'automatisation.Cliquez ici pour plus de
trouver
à gogo.find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -b --mime-encoding "$1" | awk "{print toupper(\$0)}") -t UTF-8 > converted "$1" && mv converted "$1"' -- {} \;
sed
de commande est-il sur le but, permettant la détection automatique de l'encodage des caractères. J'ai élargi la réponse à expliquer maintenant. Il serait courtois en ce qui concerne le lectorat de supprimer tous les autres commentaires non pertinents. Je vous remercie.PHP iconv()
iconv("UTF-8", "ISO-8859-15", $input);
DOS/Windows: utilisez Code de la page
Commande
chcp
peut être utilisé pour modifier la page de code. Code de la page 65001 Microsoft, qui est le nom de l'UTF-8. Après le paramétrage de la page de code, la sortie générée par les commandes suivantes seront de code de page.pour écrire un fichier de propriétés (Java) normalement, j'utilise sous linux (mint et ubuntu distributions):
Par exemple:
PS: j'ai écrits d'Exécution numéro un/deux en portugais à la force des caractères spéciaux.
Dans mon cas, lors de la première exécution, j'ai reçu ce message:
Lorsque j'ai installé la première option (gcj-5-jdk) le problème était fini.
J'espère que cela aide quelqu'un.
Avec ruby:
Source: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
Utiliser ce script Python: https://github.com/goerz/convert_encoding.py
Fonctionne sur n'importe quelle plate-forme. Nécessite Python 2.7.
Mon outil de prédilection pour ce qui est Jedit (java éditeur de texte) qui a deux fonctions pratiques :
Simplement changer l'encodage du fichier chargé dans IntelliJ IDEA IDE, sur la droite de la barre d'état (en bas), où les jeux de caractères est indiqué. Il invite à Recharger ou de les Convertir, utiliser Convertir. Assurez-vous que vous avez sauvegardé fichier d'origine à l'avance.
Comme décrit sur Comment puis-je corriger l'encodage d'un fichier? Synalyze Il! permet de convertir facilement sur OS X entre tous les encodages supportés par le ICU bibliothèque.
En outre, vous pouvez afficher certains des octets d'un fichier traduit en Unicode à partir de tous les codages de voir rapidement qui est le droit pour votre fichier.