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


当前回答

这里有一些可靠的ascii、bom和utf8检测的C代码:https://unicodebook.readthedocs.io/guess_encoding.html

仅ASCII, UTF-8和编码使用BOM (UTF-7与BOM, UTF-8与BOM, UTF-16和UTF-32)有可靠的算法来获取文档的编码。 对于所有其他编码,您必须信任基于统计的启发式。

编辑:

一个powershell版本的c#答案来自:找到任何文件编码的有效方法。只适用于签名(炸弹)。

# get-encoding.ps1
param([Parameter(ValueFromPipeline=$True)] $filename)    
begin {
  # set .net current directoy                                                                                                   
  [Environment]::CurrentDirectory = (pwd).path
}
process {
  $reader = [System.IO.StreamReader]::new($filename, 
    [System.Text.Encoding]::default,$true)
  $peek = $reader.Peek()
  $encoding = $reader.currentencoding
  $reader.close()
  [pscustomobject]@{Name=split-path $filename -leaf
                BodyName=$encoding.BodyName
                EncodingName=$encoding.EncodingName}
}


.\get-encoding chinese8.txt

Name         BodyName EncodingName
----         -------- ------------
chinese8.txt utf-8    Unicode (UTF-8)


get-childitem -file | .\get-encoding

其他回答

类似于上面用记事本列出的解决方案,如果你正在使用Visual Studio,你也可以在Visual Studio中打开文件。在Visual Studio中,您可以选择“File > Advanced Save Options…”

“Encoding:”组合框将明确地告诉您当前文件使用的是哪种编码。它比记事本列出了更多的文本编码,所以它在处理来自世界各地的各种文件时很有用。

就像记事本一样,你也可以从选项列表中更改编码,然后在点击“确定”后保存文件。你也可以通过Save As对话框中的“Save with encoding…”选项来选择你想要的编码(通过单击Save按钮旁边的箭头)。

EncodingChecker

文件编码检查器是一个GUI工具,允许您验证一个或多个文件的文本编码。该工具可以显示所有选定文件的编码,或者仅显示不具有指定编码的文件的编码。

文件编码检查程序需要。net 4或更高版本才能运行。

我发现另一个有用的工具是:https://archive.codeplex.com/?p=encodingchecker EXE可以在这里找到

如果你的Windows机器上有“git”或“Cygwin”,然后转到文件所在的文件夹并执行命令:

file *

这将为您提供该文件夹中所有文件的编码细节。

您可以在文件位置上打开git bash,然后运行命令file -i file_name来检查

例子

user filesData
$ file -i data.csv
data.csv: text/csv; charset=utf-8