这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然,我可以写一个小c#应用程序,但我想知道是否有一些已经内置?
当前回答
寻找一个Node.js/npm解决方案?试试encoding-checker:
npm install -g encoding-checker
使用
Usage: encoding-checker [-p pattern] [-i encoding] [-v]
Options:
--help Show help [boolean]
--version Show version number [boolean]
--pattern, -p, -d [default: "*"]
--ignore-encoding, -i [default: ""]
--verbose, -v [default: false]
例子
获取当前目录下所有文件的编码:
encoding-checker
返回当前目录下所有md文件的编码:
encoding-checker -p "*.md"
获取当前目录及其子文件夹中所有文件的编码(对于巨大的文件夹将需要相当长的时间;看似无响应):
encoding-checker -p "**"
更多示例请参考npm文档或官方存储库。
其他回答
这里有一些可靠的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
EncodingChecker
文件编码检查器是一个GUI工具,允许您验证一个或多个文件的文本编码。该工具可以显示所有选定文件的编码,或者仅显示不具有指定编码的文件的编码。
文件编码检查程序需要。net 4或更高版本才能运行。
寻找一个Node.js/npm解决方案?试试encoding-checker:
npm install -g encoding-checker
使用
Usage: encoding-checker [-p pattern] [-i encoding] [-v]
Options:
--help Show help [boolean]
--version Show version number [boolean]
--pattern, -p, -d [default: "*"]
--ignore-encoding, -i [default: ""]
--verbose, -v [default: false]
例子
获取当前目录下所有文件的编码:
encoding-checker
返回当前目录下所有md文件的编码:
encoding-checker -p "*.md"
获取当前目录及其子文件夹中所有文件的编码(对于巨大的文件夹将需要相当长的时间;看似无响应):
encoding-checker -p "**"
更多示例请参考npm文档或官方存储库。
我发现做到这一点的唯一方法是VIM或notepad++。
一个简单的解决方案可能是在Firefox中打开该文件。
将文件拖放到firefox中 按Ctrl+I打开页面信息
和文本编码将出现在“页面信息”窗口。
注意:如果文件不是txt格式,请将其重命名为txt,然后重试。
附:欲了解更多信息,请参阅这篇文章。
推荐文章
- Windows下的端口转发
- Windows版本的cron是什么?
- cmd.exe使用的编码/代码页是什么?
- 如何从Windows资源管理器启动PowerShell ?
- 获取Windows中文件的编码
- 如何用批处理脚本对目录中的每个文件做一些事情
- 如何在Windows命令行中使用不同的颜色进行回显
- 如何检查进程是否通过批处理脚本运行
- 在windows的命令行上创建一个空文件(如linux的touch命令)
- DLL文件究竟是什么,它们是如何工作的?
- ArrayBuffer到base64编码的字符串
- 如何检查字符串是否为unicode或ascii?
- 键盘快捷键将剪贴板内容粘贴到命令提示符窗口(winxp)
- 如何检测文本文件的编码/编码页?
- 通过批处理或cmd文件停止和启动服务?