Question Meilleur moyen de convertir des fichiers texte entre des jeux de caractères?


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 de l'UTF-8 à l'ISO-8859-15 et vice versa.

Tout se passe: des one-liners dans votre langage de script favori, des outils de ligne de commande ou d'autres utilitaires pour OS, sites web, etc.

Meilleures solutions jusqu'à présent:

Sous Linux / UNIX / OS X / cygwin:

  • Gnou iconv suggéré par Troels Arvin est le mieux utilisé comme un filtre. Cela semble être universellement disponible. Exemple:

    $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
    

    Comme indiqué par Ben, il y a un convertisseur en ligne en utilisant iconv.

  • Gnou recoder (Manuel) suggéré par Cheekysoft va convertir 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 prend également en charge surfaces qui peut être utilisé pour convertir entre différents types de fin de ligne et encodages:

    Convertir les nouvelles lignes de LF (Unix) en CR-LF (DOS):

    $ recode ../CR-LF in.txt
    

    Fichier d'encodage Base64:

    $ recode ../Base64 in.txt
    

    Vous pouvez également les combiner.

    Convertir 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
    

Sur Windows avec Powershell (Jay Bazuzi):

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

    (Aucun support ISO-8859-15 cependant, il dit que les charsets supportés sont unicode, utf7, utf8, utf32, ascii, bigendianunicode, par défaut, et oem.)

modifier

Voulez-vous dire support iso-8859-1? L'utilisation de "String" fait cela par ex. 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, Octet, BigEndianUnicode, UTF8, UTF7, Ascii".


469
2017-09-15 17:24


origine


Réponses:


Utilitaire autonome approche

iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt
-f ENCODAGE du codage de l'entrée
-t CODANT l'encodage de la sortie

202
2017-09-15 17:24



Essayez VIM

Si tu as vim vous pouvez utiliser ceci:

Non testé pour chaque encodage.

La partie intéressante à ce sujet est que vous n'avez pas à connaître l'encodage source

vim +"set nobomb | set fenc=utf8 | x" filename.txt

Sachez que cette commande modifie directement le fichier


Explication partie!

  1. + : 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
  2. | : Séparateur de plusieurs commandes (comme ; à bash)
  3. set nobomb : pas de nomenclature utf-8
  4. set fenc=utf8 : Définir un nouvel encodage sur utf-8 lien doc
  5. x : Enregistrer et fermer le fichier
  6. filename.txt : chemin vers le fichier
  7. " : qotes sont ici à cause des tuyaux. (sinon bash les utilisera comme bash pipe)

67
2017-09-15 17:29



Sous Linux, vous pouvez utiliser le très puissant recoder commande pour essayer de convertir entre les différents jeux de caractères ainsi que tous les problèmes de fin de ligne. recoder -l vous montrera tous les formats et les encodages que l'outil peut convertir entre. Ce sera probablement une très longue liste.


32
2017-09-15 17:23



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

19
2017-09-17 06:18



iconv (1)

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

Il existe également des outils basés sur iconv dans de nombreuses langues.


19
2017-09-15 17:25



Essayez iconv Fonction Bash

Je l'ai mis 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 ça:

utf8 MyClass.java

16



Essayez Notepad ++

Sur Windows, j'étais capable d'utiliser Notepad ++ pour faire la conversion de ISO-8859-1 à UTF-8. Cliquez sur "Encoding" et alors "Convert to UTF-8".


12



Oneliner utilisant find, avec détection automatique

L'encodage de caractères de tous les fichiers texte correspondants est détecté automatiquement et tous les fichiers texte correspondants sont convertis en utf-8 codage:

$ 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, courir un one-liner avec le -c flag, et en passant le nom de fichier en tant qu'argument de position "$1" avec -- {}. Entre les deux utf-8 le fichier de sortie est temporairement nommé converted.

Par lequel file -bi veux dire:

  • -b, --brief
    N'ajoutez pas de noms de fichiers aux lignes de sortie (mode bref).

  • -i, --mime
    Fait en sorte que la commande de fichier génère des chaînes de type MIME plutôt que celles plus lisibles par l'homme. Ainsi, il peut dire 'texte / plaine; charset = us-ascii 'plutôt que "texte ASCII".

le find commande est très utile pour une telle automatisation de gestion de fichiers.

Cliquez ici pour plus find en abondance.


8