Quel est l’outil ou la méthode le plus simple et le plus rapide pour convertir des fichiers texte entre des jeux de caractères?
Plus précisément, j'ai besoin de convertir UTF-8 en ISO-8859-15 et inversement.
Tout se passe: one-liners dans votre langage de script préféré, des outils de ligne de commande ou d'autres utilitaires pour système d'exploitation, sites Web, etc.
Sous Linux/UNIX/OS X/cygwin:
Gnu iconv suggéré par Troels Arvin est mieux utilisé en tant que 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 ) suggéré 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 surfaces qui peuvent être utilisées pour convertir entre différents types de fin de ligne et codages:
Conversion de nouvelles lignes de LF (Unix) en CR-LF (DOS):
$ recode ../CR-LF in.txt
Base64 encoder le fichier:
$ recode ../Base64 in.txt
Vous pouvez aussi les combiner.
Convertissez un fichier UTF8 codé en Base64 avec des fins de ligne Unix en fichier Latin 1 codé 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 support ISO-8859-15 cependant; il indique que les jeux de caractères pris en charge sont les suivants: unicode, utf7, utf8, utf32, ascii, bigendianunicode, default et oem.)
Voulez-vous dire iso-8859-1? Utiliser "String" fait cela par exemple. pour vice versa
gc -en string in.txt | Out-File -en utf8 out.txt
Remarque: Les valeurs d'énumération possibles sont "Inconnu, Chaîne, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".
Utilitaire autonome approche
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
Vous n'êtes pas obligé de spécifier l'un ou l'autre de ces arguments. Ils utiliseront par défaut les paramètres régionaux actuels, généralement UTF-8.
Si vous avez vim
, vous pouvez utiliser ceci:
Non testé pour chaque encodage.
La partie intéressante à ce sujet est que vous n'avez pas à connaître le codage source.
vim +"set nobomb | set fenc=utf8 | x" filename.txt
Attention, cette commande modifie directement le fichier
+
: utilisé par vim pour entrer directement une 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 le nouveau codage sur utf-8 doc linkx
: enregistrer et fermer le fichierfilename.txt
: chemin d'accès au fichier"
: les notes sont ici à cause des tuyaux. (sinon bash les utilisera comme pipe bash)Sous Linux, vous pouvez utiliser la très puissante commande recode pour essayer de convertir les différents jeux de caractères ainsi que tout problème de fin de ligne. recode -l vous montrera tous les formats et encodages entre lesquels l'outil peut convertir. La liste sera probablement très longue.
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
Il existe également des outils iconv dans de nombreuses langues.
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT
La version la plus courte, si vous pouvez supposer que la nomenclature d'entrée est correcte:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
J'ai mis ceci dans .bashrc
:
utf8()
{
iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
rm $1
mv $1.tmp $1
}
..pour pouvoir convertir des fichiers comme celui-ci:
utf8 MyClass.Java
Sous Windows, j’ai pu utiliser Notepad ++ pour convertir les fichiers ISO-8859-1 en UTF-8 . Cliquez sur "Encoding"
puis sur "Convert to UTF-8"
.
Le codage de caractères de tous les fichiers texte correspondants est détecté automatiquement et tous les fichiers texte correspondants sont convertis en codage utf-8
:
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
Pour effectuer ces étapes, un sous-shell sh
est utilisé avec -exec
, en exécutant une ligne avec le drapeau -c
et en transmettant le nom de fichier comme argument de position "$1"
avec -- {}
. Entre les deux, le fichier de sortie utf-8
est temporairement nommé converted
.
Où file -bi
signifie:
-b, --brief
Ne pas ajouter de noms de fichiers aux lignes de sortie (mode bref).
-i, --mime
Force la commande file à générer des chaînes de type mime plutôt que des chaînes plus classiques lisibles par l'homme. Ainsi, on peut dire «text/plain; charset = us-ascii ’plutôt que« texte ASCII ».
La commande find
est très utile pour une telle automatisation de la gestion de fichiers.
Cliquez ici pour plus find
à gogo .
PHP iconv ()
iconv("UTF-8", "ISO-8859-15", $input);
DOS/Windows: utilisez Page de code
chcp 65001>NUL
type ascii.txt > unicode.txt
La commande chcp
peut être utilisée pour changer la page de code. La page de codes 65001 est le nom Microsoft pour UTF-8. Après avoir défini la page de code, la sortie générée par les commandes suivantes correspond à un ensemble de pages de code.
pour écrire le fichier de propriétés (Java) normalement, je l’utilise sous linux (distributions menthe et Ubuntu)
$ native2ascii filename.properties
Par exemple:
$ cat test.properties
first=Execução número um
second=Execução número dois
$ native2ascii test.properties
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois
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:
$ native2ascii teste.txt
The program 'native2ascii' can be found in the following packages:
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
Try: Sudo apt install <selected package>
Lorsque j'ai installé la première option (gcj-5-jdk), le problème était résolu.
J'espère que cela aidera quelqu'un.
Mon outil préféré pour cela est Jedit (un éditeur de texte basé sur Java) qui présente deux caractéristiques très pratiques:
Utilisez ce script Python: https://github.com/goerz/convert_encoding.py Fonctionne sur n’importe quelle plate-forme. Nécessite Python 2.7.
Avec rubis:
Ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"
Source: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
Modifiez simplement le codage 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 Convert. Assurez-vous d'avoir sauvegardé le fichier original à l'avance.