La meilleure façon de convertir des fichiers texte entre les jeux de caractères?
Quel est l'outil ou la méthode le plus rapide et le plus facile pour convertir des fichiers texte entre les jeux de caractères?
plus précisément, je dois passer de UTF-8 à ISO-8859-15 et vice versa.
tout va: une-liners dans votre langage de script préféré, des outils de ligne de commande ou d'autres utilités pour OS, sites web, etc.
meilleures solutions jusqu'à présent:
sous Linux / UNIX/OS X / cygwin:
-
Gnu iconv suggéré par Troels Arvin est le mieux utilisé comme un filtre . Il semble être universellement disponibles. Exemple:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
comme souligné par Ben , il ya un convertisseur en ligne en utilisant iconv .
-
Gnu recode ( manuel ) suggéré par Cheekysoft convertira un ou plusieurs fichiers en place . Exemple:
$ recode UTF8..ISO-8859-15 in.txt
celui-ci utilise des alias plus courts:
$ recode utf8..l9 in.txt
Recode supporte aussi surfaces qui peuvent être utilisées pour convertir entre différents types de fin de ligne et d'encodage:
Convertissez newlines de LF (Unix) en CR - LF (DOS):
$ recode ../CR-LF in.txt
Base64 fichier d'encodage:
$ recode ../Base64 in.txt
vous pouvez également les combiner.
Convertir en Base64, encodé en 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 support ISO-8859-15 cependant; il dit que les charsets supportés sont unicode, utf7, utf8, utf32, ascii, bigendianunicode, default, et oem.)
Modifier
voulez-vous dire Soutien iso-8859-1? L'utilisation de "String" le fait par exemple pour vice versa
gc -en string in.txt | Out-File -en utf8 out.txt
Note: les valeurs d'énumération possibles sont "Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".
- CsCvt - Kalytta's Character Set Converter est un autre grand outil de conversion basé sur la ligne de commande pour Windows.
16 réponses
utilitaire autonome approche
iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt
-f ENCODING the encoding of the input -t ENCODING the encoding of the output
Try VIM
Si vous avez vim
vous pouvez utiliser ceci:
Non testé pour chaque encodage.
la partie cool à ce sujet est que vous ne devez pas connaître le codage de source
vim +"set nobomb | set fenc=utf8 | x" filename.txt
sachez que cette commande modifie directement le fichier
partie explication!
-
+
: utilisé par vim pour entrer directement la commande lors 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 commandes multiples (comme;
in bash) - "151960920 : il n'est pas de l'utf-8 BOM
-
set fenc=utf8
: Nouveau codage pour utf-8 doc link -
x
: enregistrer et fermer le fichier -
filename.txt
: chemin vers le dossier -
"
: qotes sont ici à cause des pipes. (sinon bash s'en bash pipe)
sous Linux, vous pouvez utiliser la très puissante commande recode pour essayer de convertir entre les différents jeux de caractères ainsi que n'importe quelle fin de ligne. recode-l vous montrera tous les formats et codages que l'outil peut convertir entre. Il est probable que la liste soit très longue.
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
il existe aussi des outils basés sur 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 le BOM d'entrée est correct:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
Essayer iconv Bash fonction
j'ai mis ceci dans .bashrc
:
utf8()
{
iconv -f ISO-8859-1 -t UTF-8 > .tmp
rm
mv .tmp
}
..pour pouvoir convertir des fichiers comme ça:
utf8 MyClass.java
Essayer De Notepad++
sous Windows j'ai pu utiliser le Notepad++ pour faire la conversion de ISO-8859-1 en UTF-8 . Cliquez sur "Encoding"
puis sur "Convert to UTF-8"
.
Oneliner utilisant find, avec détection automatique
l'encodage du caractère de tous les fichiers texte correspondants est détecté automatiquement et tous les fichiers texte correspondants sont convertis en utf-8
encodage:
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "" && mv converted ""' -- {} \;
pour effectuer ces étapes, un sous-shell sh
est utilisé avec -exec
, portant une doublure avec le drapeau -c
, et passant le nom du fichier comme argument de position ""
avec -- {}
. Entre les deux, le fichier de sortie utf-8
est temporairement appelé converted
.
par lequel file -bi
signifie:
-
-b, --bref
Ne pas ajouter de nom de fichier aux lignes de sortie (mode bref). -
- i, --mime
Provoque la sortie de la commande file les chaînes de caractères mime plutôt que les plus traditionnelles lisibles par l'homme. Ainsi, il peut être écrit "text/plain; charset=us-ascii’ plutôt que"ASCII text".
la commande find
est très utile pour une telle automatisation de la gestion de fichiers.
Cliquez ici pour plus find
galore .
DOS / Windows: use Code page
chcp 65001>NUL
type ascii.txt > unicode.txt
commande chcp
peut être utilisé pour changer la page de code. La page de Code 65001 est le nom de Microsoft pour UTF-8. Après avoir défini la page de code, la sortie générée par les commandes suivantes sera de la page de code définie.
Yudit l'éditeur supporte et convertit entre de nombreux encodages de texte différents, fonctionne sous linux, windows, mac, etc.
- Adam
pour écrire le fichier de propriétés (Java) normalement j'utilise ceci sous linux (distributions mint 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 exécution numéro un/deux en portugais pour forcer caractères spéciaux.
dans mon cas, en 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>
quand j'ai installé la première option (gcj-5-jdk) le problème était terminé.
j'espère que cela aidera quelqu'un.
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
utilisez ce script Python: https://github.com/goerz/convert_encoding.py Fonctionne sur n'importe quelle plate-forme. Nécessite Python 2.7.
mon outil préféré pour cela est Jedit (un éditeur de texte basé sur java) qui a deux fonctionnalités très pratiques:
- un code qui permet à l'utilisateur de recharger un texte avec un encodage différent (et, en tant que tel, de contrôler visuellement le résultat)
- un autre qui permet à l'utilisateur de choisir explicitement l'encodage (et le char de fin de ligne) avant de sauvegarder
comme décrit sur comment corriger le codage de caractères d'un fichier? Synalyze It! vous permet de convertir facilement sur OS X entre tous les encodages supportés par la bibliothèque ICU .
en outre, vous pouvez afficher quelques octets d'un fichier traduit en Unicode à partir de tous les encodages pour voir rapidement qui est le bon pour votre fichier.