Quel est l'outil ou la méthode la plus rapide et la plus simple pour convertir des fichiers texte entre des jeux de caractères?
Plus précisément, je dois convertir UTF-8 en ISO-8859-15 et vice versa.
Tout y passe: des lignes simples dans votre langage de script préféré, des outils en ligne de commande ou d'autres utilitaires pour OS, sites Web, etc.
Les meilleures solutions à ce jour:
Sous Linux / UNIX / OS X / cygwin:
L' icône Gnu suggérée par Troels Arvin est mieux utilisée comme filtre . Il semble être universellement disponible. Exemple:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
Comme l'a souligné Ben , il existe un convertisseur en ligne utilisant iconv .
Gnu recode ( manuel ) proposé par Cheekysoft convertira un ou plusieurs fichiers sur place . Exemple:
$ recode UTF8..ISO-8859-15 in.txt
Celui-ci utilise des alias plus courts:
$ recode utf8..l9 in.txt
Recode prend également en charge les surfaces qui peuvent être utilisées pour convertir entre différents types de fin de ligne et encodages:
Convertir les sauts de ligne de LF (Unix) en CR-LF (DOS):
$ recode ../CR-LF in.txt
Fichier de codage Base64:
$ recode ../Base64 in.txt
Vous pouvez également les combiner.
Convertissez un fichier UTF8 encodé en Base64 avec des fins de ligne Unix en fichier Latin 1 encodé en Base64 avec des fins de ligne Dos:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
Sous Windows avec Powershell ( Jay Bazuzi ):
PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt
(Pas de prise en charge ISO-8859-15 cependant; il indique que les jeux de caractères pris en charge sont unicode, utf7, utf8, utf32, ascii, bigendianunicode, default et oem.)
Éditer
Voulez-vous dire support iso-8859-1? Utiliser "String" le fait par exemple pour l'inverse
gc -en string in.txt | Out-File -en utf8 out.txt
Remarque: Les valeurs d'énumération possibles sont "Inconnu, Chaîne, Unicode, Octet, BigEndianUnicode, UTF8, UTF7, Ascii".
- CsCvt - Le convertisseur de jeu de caractères de Kalytta est un autre excellent outil de conversion basé sur la ligne de commande pour Windows.
la source
gc -en Ascii readme.html | Out-File -en UTF8 readme.html
mais il convertit le fichier en utf-8 mais alors c'est vide! Notepad ++ dit que le fichier est au format Ansi, mais si je comprends bien, ce n'est même pas un jeu de caractères valide ?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFrecode
agira également comme un filtre si vous ne lui transmettez aucun nom de fichier, par exemple:recode utf8..l9 < in.txt > out.txt
enca
, vous n'avez pas besoin de spécifier l'encodage d'entrée. Il suffit souvent juste pour préciser la langue:enca -L ru -x utf8 FILE.TXT
.iconv -f UTF-32 -t UTF-8 input.csv > output.csv
n'a enregistré qu'environ sept cent mille lignes, seulement un tiers. L'utilisation de la version sur place aiconv -f UTF-32 -t UTF-8 file.csv
réussi à convertir les 2 millions de lignes et plus.Réponses:
Approche utilitaire autonome
Vous n'avez pas besoin de spécifier l'un de ces arguments. Ils seront par défaut à votre locale actuelle, qui est généralement UTF-8.
la source
iconv -l | grep UTF
vous indiquera tous les encodages UTF que votre copie d'iconv prend en charge.chardet in.txt
pour générer une meilleure estimation. Le résultat peut être utilisé comme ENCODAGE dansiconv -f ENCODING
.illegal input sequence at position
messages), et remplacer les caractères « bizarres » avec des personnages « similaires »: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 l'-f
option (de) aveciconv
. (2) lafile --mime-encoding <file/s>
commande peut vous aider à comprendre l'encodage en premier lieu.file
commande a signalé ma source comme UTF-16 Little Endian; en cours d'exécution l'aiconv -f UTF-16 -t UTF-8...
transformé incorrectement en ASCII, j'ai dû explicitement spécifier laiconv -f UTF-16LE...
sortie UTF-8Essayez VIM
Si vous en avez,
vim
vous pouvez utiliser ceci:Non testé pour chaque encodage.
La partie intéressante à ce sujet est que vous n'avez pas besoin de connaître l'encodage source
Sachez que cette commande modifie directement le fichier
Partie explicative!
+
: Utilisé par vim pour entrer directement la commande lors de l'ouverture d'un fichier. Habituellement utilisé pour ouvrir un fichier sur une ligne spécifique:vim +14 file.txt
|
: Séparateur de plusieurs commandes (comme;
dans bash)set nobomb
: pas de nomenclature utf-8set fenc=utf8
: Définir un nouvel encodage sur le lien doc utf-8x
: Enregistrer et fermer le fichierfilename.txt
: chemin d'accès au fichier"
: qotes sont ici à cause des tuyaux. (sinon bash les utilisera comme pipe bash)la source
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 recodage commande pour essayer de convertir entre les différents jeux de caractères, ainsi que des problèmes de fin de ligne. recode -l vous montrera tous les formats et encodages entre lesquels l'outil peut convertir. Ce sera probablement une TRÈS longue liste.
la source
LF
? Il y a/CR
et/CR-LF
mais pas/LF
iconv (1)
Il existe également des outils basés sur des icônes dans de nombreuses langues.
la source
La version la plus courte, si vous pouvez supposer que la nomenclature d'entrée est correcte:
la source
gc .\file-utf8.txt | sc -en utf7 .\file-utf7.txt
Set-Content
fonctionne mieux queOut-File
?file-utf8.txt
fichier d'entrée car elles avaient toutes les deux le même fichier de sortie quefile-utf7.txt
.gc -en Ascii readme.html | Out-File -en UTF8 readme.html
mais il convertit le fichier en utf-8 mais alors c'est vide! Notepad ++ dit que le fichier est au format Ansi, mais si je comprends bien, ce n'est même pas un jeu de caractères valide ?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFEssayez la fonction Iconv Bash
Je l'ai mis dans
.bashrc
:..pour pouvoir convertir des fichiers comme ceci:
la source

au début du fichier.Essayez Notepad ++
Sous Windows, j'ai pu utiliser Notepad ++ pour effectuer la conversion d' ISO-8859-1 en UTF-8 . Cliquez sur
"Encoding"
puis sur"Convert to UTF-8"
.la source
Oneliner utilisant find, avec détection automatique du jeu de caractères
Le codage des caractères de tous les fichiers texte correspondants est détecté automatiquement et tous les fichiers texte correspondants sont convertis en
utf-8
codage:Pour effectuer ces étapes, un sous-shell
sh
est utilisé avec-exec
, exécutant une ligne avec l'-c
indicateur et passant le nom de fichier comme argument positionnel"$1"
avec-- {}
. Entre les deux, leutf-8
fichier de sortie est temporairement nomméconverted
.Par quoi
file -bi
signifie:-b
,--brief
Ne pas ajouter de noms de fichiers aux lignes de sortie (mode bref).-i
,--mime
Force la commande file à afficher des chaînes de type mime plutôt que les chaînes lisibles par l'homme plus traditionnelles. Ainsi, il peut dire par exempletext/plain; charset=us-ascii
plutôt queASCII text
. Lased
commande réduit cela uniquementus-ascii
comme requis pariconv
.La
find
commande est très utile pour une telle automatisation de la gestion des fichiers. Cliquez ici pour plus àfind
gogo .la source
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
commande est là exprès, permettant la détection automatique de l'encodage des caractères. J'ai développé la réponse pour l'expliquer maintenant. Il serait courtois à l'égard du lectorat de supprimer tout commentaire non pertinent restant. Je vous remercie.PHP iconv ()
iconv("UTF-8", "ISO-8859-15", $input);
la source
DOS / Windows: utilisez la page de code
La commande
chcp
peut être utilisée pour modifier la page de codes. La page de codes 65001 est le nom Microsoft pour UTF-8. Après avoir défini la page de codes, la sortie générée par les commandes suivantes sera de la page de codes définie.la source
pour écrire le fichier de propriétés (Java) normalement j'utilise ceci sous linux (distributions mint et ubuntu):
Par exemple:
PS: J'ai écrit l'exécution numéro un / deux en portugais pour forcer les 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 terminé.
J'espère que cela aide quelqu'un.
la source
Avec rubis:
Source: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
la source
Utilisez ce script Python: https://github.com/goerz/convert_encoding.py Fonctionne sur n'importe quelle plateforme. Nécessite Python 2.7.
la source
Mon outil préféré est Jedit (un éditeur de texte basé sur java) qui a deux fonctionnalités très pratiques:
la source
Modifiez simplement l'encodage du fichier chargé dans IntelliJ IDEA IDE, à droite de la barre d'état (en bas), où le jeu de caractères actuel est indiqué. Il vous invite à recharger ou convertir, utilisez Convertir. Assurez-vous d'avoir sauvegardé le fichier d'origine à l'avance.
la source
Si les applications de l'interface graphique macOS sont votre pain et beurre, SubEthaEdit est l'éditeur de texte auquel je vais habituellement pour l'encodage-wrangling - son "aperçu de conversion" vous permet de voir tous les caractères invalides dans l'encodage de sortie, et de les corriger / supprimer.
Et c'est open-source maintenant, alors oui pour eux 😉.
la source
Comme décrit dans Comment corriger l'encodage de caractères d'un fichier? Synalyze It! vous permet de convertir facilement sous OS X entre tous les encodages pris en charge par la bibliothèque ICU .
De plus, vous pouvez afficher certains octets d'un fichier traduit en Unicode à partir de tous les encodages pour voir rapidement celui qui convient à votre fichier.
la source