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++.