57 votes

Conversion par lots de l'encodage dans les fichiers

Comment puis-je convertir par lot les fichiers d'un répertoire pour leur encodage (par exemple ANSI UTF-8) avec une commande ou un outil ?

Pour les fichiers uniques, un éditeur est utile, mais comment faire le travail pour les fichiers de masse ?

0voto

phuclv Points 22397

ConvertZ est un autre outil Windows GUI pour la conversion par lots

  • Convertissez le contenu d'un fichier (texte brut) ou du presse-papiers entre les encodages suivants : big5, gbk, hz, shift-jis, jis, euc-jp, unicode big-endian, unicode little-endian, et utf-8.
  • Conversion de fichiers par lots
  • Prévisualisez le contenu du fichier et le résultat de la conversion avant la conversion proprement dite.
  • Mise à jour automatique du jeu de caractères dans <Meta> si cela est spécifié dans la documentation html.
  • Correction automatique des caractères Big5/GBK mal mappés après la conversion.
  • Change l'encodage du nom de fichier parmi big5, gbk, shift-jis et unicode.
  • Convertissez l'ID3 ou l'APE des MP3 en encodage big5, gbk, shift-jis, unicode et utf-8.
  • Convertir le tag Ogg entre le chinois traditionnel et le chinois simplifié en utf-8.

Lien de téléchargement alternatif : https://www.softking.com.tw/download/1763/

ConvertZ file conversion interface

ConvertZ settings

0voto

igonejack Points 101

J'ai finalement fabriqué un outil pour cela : https://github.com/gonejack/transcode

Installez :

go get -u github.com/gonejack/transcode

Utilisation :

> transcode source.txt
> transcode -s gbk -t utf8 source.txt

0voto

Missing Twins Points 1

---------------Solution 1-----------------------------
Il y a deux défauts dans la réponse de @akira.

  1. Votre fichier original sera remis à zéro en cas d'échec.
  2. Si votre chemin d'accès contient un caractère non ASCII, l'erreur suivante se produira Set-Content : An object at the specified path ...txt does not exist, or has been filtered by the -Include or -Exclude parameter.

Il s'agit d'une version améliorée, en ajoutant -LiteralPath y if($?)

foreach($i in ls -name *.txt) {
    $relativePath = Resolve-Path -Relative -LiteralPath "$i"
    $temp = Get-Content -LiteralPath "$relativePath" 
    if($?)
    {
        Out-File -LiteralPath "$i" -inputobject "$temp" -encoding utf8 -force
    }
}

----------------Solution 2 (meilleure)----------------
PowerShell peut couvrir des encodages très limités, tels que gb2312, Shift-JIS n'en font pas partie. Notepad++ a un plugin Python qui peut faire un meilleur travail que le powershell, et relativement plus sûr, vous pouvez revoir ce que vous êtes sur le point de convertir.

  1. Utilice Everything trouver le fichier que vous voulez convertir. Le lien de téléchargement se trouve ci-dessous
    https://www.voidtools.com/
  2. Menu -> Plugins -> Python Script -> New Scripts
  3. Copiez l'un des deux scripts(voir ci-dessous) et modifiez-le selon vos besoins, sauvegardez-le à l'emplacement par défaut.
  4. tirer tous les fichiers de Everything dans notepad++
  5. Exécutez Python-script avec Python-plugin dans notepad++ à partir de Menu -> Plugins -> Python Script -> Scripts
  6. Terminé

Il y a deux scripts, celui du bas peut convertir et sauvegarder les onglets ouverts en UTF-8.
https://gist.github.com/bjverde/88bbc418e79f016a57539c2d5043c445

for filename, bufferID, index, view in notepad.getFiles():
    console.write( filename + "\r\n")        
    notepad.activateIndex(view, index)       
    # UTF8 (without BOM)
    notepad.menuCommand(MENUCOMMAND.FORMAT_CONV2_AS_UTF_8)
    notepad.save()    
    notepad.reloadCurrentDocument()

-1voto

Zoldyck Points 1

J'ai créé un outil en ligne pour cela :

https://encoding-converter.netlify.app

Vous pouvez télécharger plusieurs fichiers à la fois pour les convertir. Utilisez-le dans cet ordre :

  1. entrer les encodages
  2. sélectionnez/glissez/déposez vos fichiers

Le téléchargement commencera automatiquement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X