在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 ++。