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?
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:
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
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
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.
un autre outil que j'ai trouvé utile: https://archive.codeplex.com/?p=encodingchecker
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.)
vous pouvez utiliser un utilitaire gratuit appelé Encoding Recognizer (nécessite java). Vous pouvez le trouver à http://mindprod.com/products2.html#ENCODINGRECOGNISER
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).
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*.
la seule façon que j'ai trouvée de faire ceci est VIM ou Notepad++.