这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然,我可以写一个小c#应用程序,但我想知道是否有一些已经内置?
当前回答
我发现做到这一点的唯一方法是VIM或notepad++。
其他回答
一个简单的解决方案可能是在Firefox中打开该文件。
将文件拖放到firefox中 按Ctrl+I打开页面信息
和文本编码将出现在“页面信息”窗口。
注意:如果文件不是txt格式,请将其重命名为txt,然后重试。
附:欲了解更多信息,请参阅这篇文章。
类似于上面用记事本列出的解决方案,如果你正在使用Visual Studio,你也可以在Visual Studio中打开文件。在Visual Studio中,您可以选择“File > Advanced Save Options…”
“Encoding:”组合框将明确地告诉您当前文件使用的是哪种编码。它比记事本列出了更多的文本编码,所以它在处理来自世界各地的各种文件时很有用。
就像记事本一样,你也可以从选项列表中更改编码,然后在点击“确定”后保存文件。你也可以通过Save As对话框中的“Save with encoding…”选项来选择你想要的编码(通过单击Save按钮旁边的箭头)。
安装git(在Windows上你必须使用git bash控制台)。类型:
file --mime-encoding *
对于当前目录中的所有文件,或
file --mime-encoding */*
对于所有子目录中的文件
这里有一些可靠的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
我发现另一个有用的工具是:https://archive.codeplex.com/?p=encodingchecker EXE可以在这里找到
推荐文章
- 我如何找到哪个程序正在使用端口80在Windows?
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行在windows中找到mysql数据目录
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- 我如何确定文件编码在OS X?
- GIT克隆在windows中跨本地文件系统回购
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- “\d”在正则表达式中是数字吗?
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?