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 ?
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 ?
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/
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
---------------Solution 1-----------------------------
Il y a deux défauts dans la réponse de @akira.
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.
Everything
trouver le fichier que vous voulez convertir. Le lien de téléchargement se trouve ci-dessousMenu -> Plugins -> Python Script -> New Scripts
Everything
dans notepad++Menu -> Plugins -> Python Script -> Scripts
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()
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 :
Le téléchargement commencera automatiquement.
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.