2009-11-05 7 views
12

Est-ce que quelqu'un connaît un outil, de préférence pour le menu contextuel de l'explorateur, pour modifier récursivement l'encodage des fichiers dans un projet de ISO-8859-1 à UTF-8 et d'autres encodages? Freeware ou pas trop cher serait génial.Modifier l'encodage des fichiers récursivement sur Windows?

Modifier: Merci pour les réponses, +1 pour tous. Mais j'aimerais vraiment pouvoir faire un clic droit sur un dossier et dire "convertir tous les fichiers .php en UTF-8". :) D'autres suggestions sont appréciées, en commençant une prime.

+0

je besoin de cela, aussi, pour un tas de fichiers GB2312. Un utilitaire qui traduit du chinois vers l'anglais récursivement serait encore mieux ... :) – endolith

Répondre

23

Vous pouvez facilement obtenir quelque chose comme ceci à l'aide Windows PowerShell. Si vous avez obtenu le contenu d'un fichier, vous pouvez le rediriger vers la cmdlet Out-File spécifiant UTF8 comme codage.

Essayez quelque chose comme:

Get-ChildItem *.txt -Recurse | ForEach-Object { 
$content = $_ | Get-Content 

Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force} 
+0

On dirait que Windows-1251 comme la valeur de codage ne fonctionne pas – userlond

+0

Selon [documentation powershell] (https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/set-content # -encoding), vous ne pouvez utiliser qu'une poignée d'options de codage, et Windows- n'en fait pas partie. – MarthyM

4

Je ne sais pas dans le menu contextuel, mais notepad++ vous permet de changer encodages de fichiers et il a une option macro ... donc vous pouvez automatiser le processus

+1

J'essaie de faire exactement cela, mais pour une raison folle, les choses que vous faites dans le menu Encodage ne sont pas enregistrées dans les macros! –

3

Vous pouvez écrire votre propre en Python en lisant les réponses à this question à propos de récursion dans les répertoires et this question sur la conversion de fichiers en UTF-8.

2

Si vous importez un fichier test.reg ayant les éléments suivants contiennent

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Directory\shell\ConvertPHP] 
@="convert all .php files to UTF-8" 

[HKEY_CLASSES_ROOT\Directory\shell\ConvertPHP\command] 
@="cmd.exe /c C:\\TEMP\\t.cmd php \"%1\"" 

Après cela, vous recevrez l'élément de menu « convertir tous les fichiers .php en UTF-8 » dans le menu contextuel de l'explorateur sur tous les répertoires. Après le choix de l'article, le programme batch C:\TEMP\t.cmd sera démarré avec la chaîne "php" comme premier paramètre et le nom du répertoire cité comme deuxième paramètre (de par exemple le premier paramètre "php" que vous pouvez ignorer si ce n'est pas nécessaire). Le fichier t.cmd comme

echo %1>C:\TEMP\t.txt 
echo %2>>C:\TEMP\t.txt 

peut être utilisé pour prouver que tout ce travail.

Ainsi, vous pouvez décoder les fichiers * .php avec n'importe quel outil que vous préférez. Par exemple, vous pouvez utiliser Windows PowerShell (voir la réponse d'Alan).

Si vous voulez que l'extension comme PHP vous soit demandée en plus, vous pouvez écrire un petit programme qui affiche la boîte de dialogue de saisie correspondante et ensuite démarrer le script Windows PowerShell.

1

Je sais que cette réponse est en retard, mais voici deux applications en ligne de commande pour convertir l'encodage. Créez simplement un wrapper de fichier par lot et ajoutez-le à votre clé * dans le registre.

http://www.autohotkey.com/forum/topic10796.html

http://www.gbordier.com/gbtools/stringconverter.htm

J'ai utilisé le stringconvertor en ajoutant comme un bouton dans mon gestionnaire de fichiers, FreeCommanderXE. Il convertit seulement un fichier à la fois, mais je peux cliquer sur un, et appuyer sur le bouton de conversion, puis cliquer sur le suivant.

1

est ici un joli ASP convertisseur récursive, vous avez besoin d'IIS en cours d'exécution sur votre ordinateur:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<HTML> 
<HEAD> 
<TITLE>Charset Converter - TFI 13/02/2015</TITLE> 
</HEAD> 
<BODY style='font-family:arial;font-size:11px;color:white;background-color:#7790c4;font-size:15px'> 
<H1 style='color:yellow'>Recursive file charset converter</H1> 
by TFI 13/02/2015<BR><BR> 
<% 
totalconverted=0 

Function transcoder(ANSIFile) 
    UFT8FileOut=ANSIFile&".tempfile" 
    Set oFS = CreateObject("Scripting.FileSystemObject") 
    Set oFrom = CreateObject("ADODB.Stream") 
    sFFSpec = oFS.GetAbsolutePathName(ANSIFile) 
    Set oTo = CreateObject("ADODB.Stream") 
    sTFSpec = oFS.GetAbsolutePathName(UFT8FileOut) 
    oFrom.Type = 2 'adTypeText 
    oFrom.Charset = fromchar '"Windows-1252" 
    oFrom.Open 
    oFrom.LoadFromFile sFFSpec 
    oTo.Type = 2 'adTypeText 
    oTo.Charset = tochar '"utf-8" 
    oTo.Open 
    oTo.WriteText oFrom.ReadText 
    oTo.SaveToFile sTFSpec,2 
    oFrom.Close 
    oTo.Close 
    oFS.DeleteFile sFFSpec 
    oFS.MoveFile sTFSpec,sFFSpec 
End Function 

Function ConvertFiles(objFolder, sExt, bRecursive, fromchar, tochar) 
    Dim objFile, objSubFolder 
    For each objFile in objFolder.Files 
     If Ucase(fso.GetExtensionName(objFile)) = ucase(sExt) Then 
      transcoder objFile.path 
      totalconverted=totalconverted+1 
      response.write "&bull; Converted <B>"&fso.GetAbsolutePathName(objFile)&"</B> from <B>"&fromchar&"</B> to <B>"&tochar&"</B><BR>" 
     End If 
    Next 

    If bRecursive = true then 
     For each objSubFolder in objFolder.Subfolders 
      ConvertFiles objSubFolder, sExt, true, fromchar, tochar 
     Next 
    End If 
End Function 

sFolder=request.form("sFolder") 
sExtension=request.form("sExtension") 
fromchar=request.form("fromchar") 
tochar=request.form("tochar") 
sSubs=request.form("sSubs") 
if sSubs="1" then 
    sub1=True 
else 
    sub1=false 
end if 

if len(sExtension)=0 then sExtension="asp" 
if len(sFolder)>0 and len(fromchar)>0 and len(tochar)>0 then 

    Dim fso, folder, files, NewsFile, sFolder, objFSO, strFileIn, strFileOut 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    'sFolder = "C:\inetpub\wwwroot\naoutf8" 
    ConvertFiles fso.GetFolder(sFolder), sExtension, Sub1, fromchar, tochar 
    response.write "<hr><br>Total files converted: "&totalconverted&"<BR><BR>New conversion?<br><br>" 
end if 
%> 
<FORM name=ndata method=post action="UTF8converter.asp"> 
<TABLE cellspacing=0 cellpadding=5> 
<TR> 
    <TD>Folder to process:</TD> 
    <TD><INPUT name=sFolder style='width:350px' placeholder="C:\example"></TD> 
</TR> 
<TR> 
    <TD>Extension:</TD> 
    <TD><INPUT name=sExtension style='width:50px' value='asp'> (default is .asp)</TD> 
</TR> 
<TR> 
    <TD>Process subfolders:</TD> 
    <TD><INPUT type=checkbox name=sSubs value='1' checked></TD> 
</TR> 
<TR> 
    <TD>From charset:</TD> 
    <TD><select name=fromchar> 
    <option value="big5">charset=big5 - Chinese Traditional (Big5) 
    <option value="euc-kr">charset=euc-kr - Korean (EUC) 
    <option value="iso-8859-1">iso-8859-1 - Western Alphabet 
    <option value="iso-8859-2">iso-8859-2 - Central European Alphabet (ISO) 
    <option value="iso-8859-3">iso-8859-3 - Latin 3 Alphabet (ISO) 
    <option value="iso-8859-4">iso-8859-4 - Baltic Alphabet (ISO) 
    <option value="iso-8859-5">iso-8859-5 - Cyrillic Alphabet (ISO) 
    <option value="iso-8859-6">iso-8859-6 - Arabic Alphabet (ISO) 
    <option value="iso-8859-7">iso-8859-7 - Greek Alphabet (ISO) 
    <option value="iso-8859-8">iso-8859-8 - Hebrew Alphabet (ISO) 
    <option value="koi8-r">koi8-r - Cyrillic Alphabet (KOI8-R) 
    <option value="shift-jis">shift-jis - Japanese (Shift-JIS) 
    <option value="x-euc">x-euc - Japanese (EUC) 
    <option value="utf-8">utf-8 - Universal Alphabet (UTF-8) 
    <option value="windows-1250">windows-1250 - Central European Alphabet (Windows) 
    <option value="windows-1251">windows-1251 - Cyrillic Alphabet (Windows) 
    <option value="windows-1252" selected>windows-1252 - Western Alphabet (Windows) 
    <option value="windows-1253">windows-1253 - Greek Alphabet (Windows) 
    <option value="windows-1254">windows-1254 - Turkish Alphabet 
    <option value="windows-1255">windows-1255 - Hebrew Alphabet (Windows) 
    <option value="windows-1256">windows-1256 - Arabic Alphabet (Windows) 
    <option value="windows-1257">windows-1257 - Baltic Alphabet (Windows) 
    <option value="windows-1258">windows-1258 - Vietnamese Alphabet (Windows) 
    <option value="windows-874">windows-874 - Thai (Windows) 
    </select></TD> 
</TR> 
<TR> 
    <TD>To charset:</TD> 
    <TD><select name=tochar> 
    <option value="big5">big5 - Chinese Traditional (Big5) 
    <option value="euc-kr">euc-kr - Korean (EUC) 
    <option value="iso-8859-1">iso-8859-1 - Western Alphabet 
    <option value="iso-8859-2">iso-8859-2 - Central European Alphabet (ISO) 
    <option value="iso-8859-3">iso-8859-3 - Latin 3 Alphabet (ISO) 
    <option value="iso-8859-4">iso-8859-4 - Baltic Alphabet (ISO) 
    <option value="iso-8859-5">iso-8859-5 - Cyrillic Alphabet (ISO) 
    <option value="iso-8859-6">iso-8859-6 - Arabic Alphabet (ISO) 
    <option value="iso-8859-7">iso-8859-7 - Greek Alphabet (ISO) 
    <option value="iso-8859-8">iso-8859-8 - Hebrew Alphabet (ISO) 
    <option value="koi8-r">koi8-r - Cyrillic Alphabet (KOI8-R) 
    <option value="shift-jis">shift-jis - Japanese (Shift-JIS) 
    <option value="x-euc">x-euc - Japanese (EUC) 
    <option value="utf-8" selected>utf-8 - Universal Alphabet (UTF-8) 
    <option value="windows-1250">windows-1250 - Central European Alphabet (Windows) 
    <option value="windows-1251">windows-1251 - Cyrillic Alphabet (Windows) 
    <option value="windows-1252">windows-1252 - Western Alphabet (Windows) 
    <option value="windows-1253">windows-1253 - Greek Alphabet (Windows) 
    <option value="windows-1254">windows-1254 - Turkish Alphabet 
    <option value="windows-1255">windows-1255 - Hebrew Alphabet (Windows) 
    <option value="windows-1256">windows-1256 - Arabic Alphabet (Windows) 
    <option value="windows-1257">windows-1257 - Baltic Alphabet (Windows) 
    <option value="windows-1258">windows-1258 - Vietnamese Alphabet (Windows) 
    <option value="windows-874">windows-874 - Thai (Windows) 
    </select></TD> 
</TR> 
</TABLE><BR> 
    <INPUT TYPE=BUTTON onClick='if(document.ndata.sFolder.value.length>0)document.ndata.submit()'value='Convert folder and subfolders'> 
</FORM> 
</BODY> 
</HTML> 
Questions connexes