在Windows中获取文件的编码

这不是一个真正的编程问题,有没有一个命令行或Windows工具(Windows 7)来获取当前的文本文件的编码? 当然,我可以写一个C#应用程序,但我想知道是否有内置的东西?

使用Windows自带的普通旧式香草记事本打开文件。
当您单击“ 另存为… ”时,它会显示文件的编码。
它看起来像这样: 在这里输入图像描述

无论默认select的编码是什么,这就是你当前的编码是文件。
如果是UTF-8,则可以将其更改为ANSI,然后单击保存以更改编码(反之亦然)。

我意识到有很多不同types的编码,但是当我被告知我们的导出文件是UTF-8并且他们需要ANSI时,这就是我所需要的。 这是一次性出口,所以记事本适合我的账单。

仅供参考:根据我的理解,我认为“ Unicode ”(如记事本中列出的)对于UTF-16是不恰当的。
更多在这里记事本的“ Unicode ”选项: Windows 7 – UTF-8和Unicdoe

(Linux)命令行工具“文件”可通过GnuWin32在Windows上使用:

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

如果你安装了git,它位于C:\ Program Files \ git \ usr \ bin。

例:

     C:\ Users \ SH \ Downloads \ SquareRoot>文件*
     _UpgradeReport_Files; 目录
    debugging; 目录
     duration.h;  ASCII C ++程序文本,带有CRLF行结束符
     IPCH; 目录
     main.cpp中;  ASCII C程序文本,带有CRLF行结束符
     Precision.txt;  ASCII文本,带有CRLF行结束符
    发布; 目录
     Speed.txt;  ASCII文本,带有CRLF行结束符
     SquareRoot.sdf; 数据
     SquareRoot.sln;  UTF-8 Unicode(带有BOM)文本,带有CRLF行结束符
     SquareRoot.sln.docstates.suo;  PCX ver。  2.5图像数据
     SquareRoot.suo;  CDF V2文档已损坏:无法读取摘要信息
     SquareRoot.vcproj;  XML文档文本
     SquareRoot.vcxproj;  XML文档文本
     SquareRoot.vcxproj.filters;  XML文档文本
     SquareRoot.vcxproj.user;  XML文档文本
     squarerootmethods.h;  ASCII C程序文本,带有CRLF行结束符
     UpgradeLog.XML;  XML文档文本

     C:\ Users \ SH \ Downloads \ SquareRoot>文件--mime-encoding *
     _UpgradeReport_Files; 二进制
    debugging; 二进制
     duration.h;  US-ASCII
     IPCH; 二进制
     main.cpp中;  US-ASCII
     Precision.txt;  US-ASCII
    发布; 二进制
     Speed.txt;  US-ASCII
     SquareRoot.sdf; 二进制
     SquareRoot.sln;  UTF-8
     SquareRoot.sln.docstates.suo; 二进制
     SquareRoot.suo;  CDF V2文件,损坏:无法读取摘要信息
     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

我发现另一个有用的工具: http : //encodingchecker.codeplex.com/

我采取使用PowerShell

# 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 

您可以使用一个名为Encoding Recognizer的免费工具(需要java)。 你可以在http://mindprod.com/products2.html#ENCODINGRECOGNISERfind它;

如果您的Windows计算机上有“git”或“Cygwin”,请转到您的文件所在的文件夹并执行以下命令:

 file * 

这会给你的文件夹中的所有文件的编码细节。

与上面使用记事本列出的解决scheme类似,您也可以在Visual Studio中打开文件,如果使用的话。 在Visual Studio中,您可以select“文件>高级保存选项…”

“编码:”combobox会告诉你具体哪个编码当前正在使用的文件。 在这里列出的文本编码比记事本要多得多,所以在处理来自世界各地的各种文件时是很有用的。

就像记事本一样,您也可以从选项列表中更改编码,然后点击“确定”保存文件。 您也可以通过Save As(另存为)对话框中的“Save with Encoding …”(通过单击Savebutton旁边的箭头)select所需的编码。

我写了4号答案(写作时)。 但是最近我在所有的电脑上安装了git,所以现在我使用@Sybren的解决scheme。 这是一个新的答案,使得这个解决scheme在PowerShell中非常方便(没有把所有的git / usr / bin放在PATH中,这对我来说太复杂了)。

将此添加到您的profile.ps1

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

并使用像: file.exe --mime-encoding * 。 您必须在PS别名的命令中包含.exe

但是,如果你不定制你的PowerShell profile.ps1,我build议你从我的开始: https : //gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0并保存到~\Documents\WindowsPowerShell 。 在没有git的计算机上使用是安全的,但是会在未findgit时写入警告。

命令中的.exe也是如何使用powershell中的C:\WINDOWS\system32\where.exe ; 以及powershell * shrug *中“默认隐藏”的许多其他操作系统CLI命令。

我发现这样做的唯一方法是VIM或Notepad ++。