Obtenir l'encodage D'un fichier dans Windows

ce n'est pas vraiment une question de programmation, existe-t-il une ligne de commande ou un outil Windows (Windows 7) pour obtenir le codage actuel d'un fichier texte? Bien sûr, je peux écrire un petit c # app mais je voulais savoir s'il ya quelque chose déjà construit?

127
demandé sur Ross Ridge 2010-09-14 19:28:14

9 réponses

ouvrir votre fichier en utilisant le bon vieux bloc-notes vanilla qui est fourni avec Windows.

Il va vous montrer l'encodage du fichier lorsque vous cliquez sur " Enregistrer sous... ".

Ça va ressembler à ceci: enter image description here

quel que soit l'encodage choisi par défaut, c'est ce que votre encodage actuel est pour le fichier.

Si elle est UTF-8, Vous pouvez la changer en ANSI et cliquez sur Enregistrer pour modifier l'encodage (ou vice-versa).

je me rends compte qu'il existe de nombreux types d'encodage, mais c'était tout ce dont j'avais besoin quand j'ai été informé que nos fichiers d'exportation étaient en UTF-8 et qu'ils nécessitaient de l'ANSI. C'était une exportation unique, donc le bloc-notes me va.

FYI: D'après ce que j'ai compris, je pense que " Unicode " (comme indiqué dans le Bloc-Notes) est un nom erroné pour UTF-16.

Plus ici sur le bloc-notes de " Unicode "option: Windows 7-UTF-8 et Unicdoe

144
répondu MikeTeeVee 2017-03-20 10:18:14

l'outil en ligne de commande (Linux) 'file' est disponible sur Windows via GnuWin32:

http://gnuwin32.sourceforge.net/packages/file.htm

si vous avez git installé, il est situé dans C:\Program Files\git\usr\bin.

exemple:

    C:\Users\SH\Downloads\SquareRoot>file *
    _UpgradeReport_Files;         directory
    Debug;                        directory
    duration.h;                   ASCII C++ program text, with CRLF line terminators
    ipch;                         directory
    main.cpp;                     ASCII C program text, with CRLF line terminators
    Precision.txt;                ASCII text, with CRLF line terminators
    Release;                      directory
    Speed.txt;                    ASCII text, with CRLF line terminators
    SquareRoot.sdf;               data
    SquareRoot.sln;               UTF-8 Unicode (with BOM) text, with CRLF line terminators
    SquareRoot.sln.docstates.suo; PCX ver. 2.5 image data
    SquareRoot.suo;               CDF V2 Document, corrupt: Cannot read summary info
    SquareRoot.vcproj;            XML  document text
    SquareRoot.vcxproj;           XML document text
    SquareRoot.vcxproj.filters;   XML document text
    SquareRoot.vcxproj.user;      XML document text
    squarerootmethods.h;          ASCII C program text, with CRLF line terminators
    UpgradeLog.XML;               XML  document text

    C:\Users\SH\Downloads\SquareRoot>file --mime-encoding *
    _UpgradeReport_Files;         binary
    Debug;                        binary
    duration.h;                   us-ascii
    ipch;                         binary
    main.cpp;                     us-ascii
    Precision.txt;                us-ascii
    Release;                      binary
    Speed.txt;                    us-ascii
    SquareRoot.sdf;               binary
    SquareRoot.sln;               utf-8
    SquareRoot.sln.docstates.suo; binary
    SquareRoot.suo;               CDF V2 Document, corrupt: Cannot read summary infobinary
    SquareRoot.vcproj;            us-ascii
    SquareRoot.vcxproj;           utf-8
    SquareRoot.vcxproj.filters;   utf-8
    SquareRoot.vcxproj.user;      utf-8
    squarerootmethods.h;          us-ascii
    UpgradeLog.XML;               us-ascii
40
répondu Sybren 2018-06-04 19:59:38

si vous avez "Git" ou "Cygwin" sur votre Machine Windows, alors allez dans le dossier où votre fichier est présent et exécutez la commande:

file *

Cela vous donnera l'encodage détails de tous les fichiers dans ce dossier.

30
répondu George Ninan 2017-04-19 07:37:36

un autre outil que j'ai trouvé utile: https://archive.codeplex.com/?p=encodingchecker

19
répondu user961954 2018-04-06 00:38:15

Voici mon point de vue sur la façon de détecter la famille Unicode des encodages de texte via BOM. La précision de cette méthode est faible, car cette méthode ne fonctionne que sur les fichiers texte (en particulier les fichiers Unicode), et par défaut à ascii quand aucun BOM n'est présent (comme la plupart des éditeurs de texte, la valeur par défaut serait UTF8 si vous voulez faire correspondre L'écosystème HTTP/web).

Update 2018 : Je ne recommande plus cette méthode. je recommande à l'aide de fichier.exe à partir de GIT ou *nix outils tel que recommandé par @Sybren, et je montre comment le faire via PowerShell dans un plus tard, la réponse .

# from https://gist.github.com/zommarin/1480974
function Get-FileEncoding($Path) {
    $bytes = [byte[]](Get-Content $Path -Encoding byte -ReadCount 4 -TotalCount 4)

    if(!$bytes) { return 'utf8' }

    switch -regex ('{0:x2}{1:x2}{2:x2}{3:x2}' -f $bytes[0],$bytes[1],$bytes[2],$bytes[3]) {
        '^efbbbf'   { return 'utf8' }
        '^2b2f76'   { return 'utf7' }
        '^fffe'     { return 'unicode' }
        '^feff'     { return 'bigendianunicode' }
        '^0000feff' { return 'utf32' }
        default     { return 'ascii' }
    }
}

dir ~\Documents\WindowsPowershell -File | 
    select Name,@{Name='Encoding';Expression={Get-FileEncoding $_.FullName}} | 
    ft -AutoSize

recommandation: cela peut fonctionner raisonnablement bien si le dir , ls , ou Get-ChildItem ne vérifie que les fichiers texte connus, et quand vous êtes à la recherche de "mauvais encodages" à partir d'une liste connue d'outils. (C'est-à-dire SQL Management Studio par défaut à UTF16, qui a cassé git auto-cr-lf Pour Windows, qui a été la valeur par défaut pour de nombreuses années.)

16
répondu yzorg 2018-06-16 15:30:21

vous pouvez utiliser un utilitaire gratuit appelé Encoding Recognizer (nécessite java). Vous pouvez le trouver à http://mindprod.com/products2.html#ENCODINGRECOGNISER

3
répondu Ville 2011-05-06 20:52:35

similaire à la solution listée ci-dessus avec Notepad, vous pouvez également ouvrir le fichier dans Visual Studio, si vous utilisez cela. Dans Visual Studio, vous pouvez sélectionner "File > Advanced Save Options..."

la boîte combo "encodage:" vous indiquera spécifiquement quel encodage est actuellement utilisé pour le fichier. Il y a beaucoup plus d'encodages de texte listés que Notepad, donc c'est utile quand on a affaire à des fichiers du monde entier et n'importe quoi d'autre.

tout comme le bloc-notes, vous pouvez aussi changer l'encodage de la liste des options, puis sauvegarder le fichier après avoir appuyé sur"OK". Vous pouvez également sélectionner l'encodage que vous voulez à travers le "Save with Encoding..."option dans la boîte de dialogue Enregistrer sous (en cliquant sur la flèche à côté du bouton Enregistrer).

2
répondu JaykeBird 2016-10-11 18:57:00

j'ai écrit le #4 réponse (au moment de l'écriture). Mais dernièrement j'ai installé git sur tous mes ordinateurs, donc maintenant j'utilise la solution de @Sybren. Voici une nouvelle réponse qui rend cette solution pratique à partir de powershell (sans mettre tout git/usr/bin dans le chemin, ce qui est trop d'encombrement pour moi).

ajoutez ceci à votre profile.ps1 :

$global:gitbin = 'C:\Program Files\Git\usr\bin'
Set-Alias file.exe $gitbin\file.exe

et utilisé comme: file.exe --mime-encoding * . Vous doit inclure .exe dans la commande pour PS alias de travail.

mais si vous ne personnalisez pas votre profil PowerShell.ps1 je vous suggère de commencer par le mien: https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 et garde ça pour ~\Documents\WindowsPowerShell . Il est sûr à utiliser sur un ordinateur sans git, mais écrire des avertissements lorsque git n'est pas trouvé.

Le .exe dans la commande est également comment j'utilise C:\WINDOWS\system32\where.exe de powershell; et de nombreux autres commandes OS CLI qui sont "cachées par défaut" par powershell, *shrug*.

2
répondu yzorg 2017-10-23 13:20:19

la seule façon que j'ai trouvée de faire ceci est VIM ou Notepad++.

0
répondu Todd Partridge 2017-09-17 15:56:10