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.
475
demandé sur Antti Sykäri 2008-09-15 21:21:31

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
204
répondu Troels Arvin 2014-02-01 17:27:08

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!

  1. + : 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
  2. | : séparateur de commandes multiples (comme ; in bash)
  3. "151960920 : il n'est pas de l'utf-8 BOM
  4. set fenc=utf8 : Nouveau codage pour utf-8 doc link
  5. x : enregistrer et fermer le fichier
  6. filename.txt : chemin vers le dossier
  7. " : qotes sont ici à cause des pipes. (sinon bash s'en bash pipe)
69
répondu Boop 2016-10-27 10:20:24

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.

33
répondu Cheekysoft 2008-09-15 17:24:18

iconv (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

il existe aussi des outils basés sur iconv dans de nombreuses langues.

20
répondu Daniel Papasian 2015-09-25 22:06:53
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
19
répondu Jay Bazuzi 2014-02-27 15:28:12

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
15
répondu Arne Evertsson 2016-10-27 10:19:58

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" .

13
répondu Jeremy Glover 2016-10-27 10:20:42

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 .

9
répondu Serge Stroobandt 2016-10-27 12:33:31

PHP iconv ()

iconv("UTF-8", "ISO-8859-15", $input);

4
répondu user15096 2008-09-17 06:18:34

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.

2
répondu lalthomas 2018-03-08 15:45:45

Yudit l'éditeur supporte et convertit entre de nombreux encodages de texte différents, fonctionne sous linux, windows, mac, etc.

- Adam

1
répondu Adam Davis 2008-09-15 17:25:47

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.

0
répondu Maciel Bombonato 2016-11-28 19:32:40

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

0
répondu Dorian 2018-06-26 06:25:16

utilisez ce script Python: https://github.com/goerz/convert_encoding.py Fonctionne sur n'importe quelle plate-forme. Nécessite Python 2.7.

0
répondu kinORnirvana 2018-07-01 10:17:32

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
0
répondu yota 2018-09-17 11:08:00

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.

-1
répondu pi3 2017-05-23 11:47:17