这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然,我可以写一个小c#应用程序,但我想知道是否有一些已经内置?
当前回答
我发现做到这一点的唯一方法是VIM或notepad++。
其他回答
使用Windows自带的普通记事本打开文件。 当你点击“另存为…”时,它会显示文件的编码。 它看起来是这样的:
无论默认选择的编码是什么,这就是文件的当前编码。 如果它是UTF-8,您可以将其更改为ANSI并单击保存以更改编码(或visa-反之)。
我知道有许多不同类型的编码,但当我被告知我们的导出文件是UTF-8,他们需要ANSI时,这就是我所需要的。这是一个一次性的输出,所以记事本适合我。
供参考:根据我的理解,我认为“Unicode”(如在记事本中列出的)是UTF-16的虚名。 更多关于记事本的“Unicode”选项:Windows 7 - UTF-8和Unicdoe
寻找一个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文档或官方存储库。
我发现另一个有用的工具是:https://archive.codeplex.com/?p=encodingchecker EXE可以在这里找到
类似于上面用记事本列出的解决方案,如果你正在使用Visual Studio,你也可以在Visual Studio中打开文件。在Visual Studio中,您可以选择“File > Advanced Save Options…”
“Encoding:”组合框将明确地告诉您当前文件使用的是哪种编码。它比记事本列出了更多的文本编码,所以它在处理来自世界各地的各种文件时很有用。
就像记事本一样,你也可以从选项列表中更改编码,然后在点击“确定”后保存文件。你也可以通过Save As对话框中的“Save with encoding…”选项来选择你想要的编码(通过单击Save按钮旁边的箭头)。
以下是我对如何通过BOM检测Unicode文本编码家族的看法。这种方法的准确性很低,因为这种方法只适用于文本文件(特别是Unicode文件),并且在没有BOM时默认为ascii(像大多数文本编辑器一样,如果你想匹配HTTP/web生态系统,默认将是UTF8)。
2018年更新:我不再推荐这种方法。我建议使用GIT中的file.exe或@Sybren推荐的*nix工具,我将在后面的回答中展示如何通过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
建议:如果dir、ls或Get-ChildItem只检查已知的文本文件,并且只从已知的工具列表中寻找“糟糕的编码”,那么这个方法可以很好地工作。(例如SQL Management Studio默认为UTF16,这破坏了GIT auto-cr-lf for Windows,这是多年来的默认。)
推荐文章
- Windows下的端口转发
- Windows版本的cron是什么?
- cmd.exe使用的编码/代码页是什么?
- 如何从Windows资源管理器启动PowerShell ?
- 获取Windows中文件的编码
- 如何用批处理脚本对目录中的每个文件做一些事情
- 如何在Windows命令行中使用不同的颜色进行回显
- 如何检查进程是否通过批处理脚本运行
- 在windows的命令行上创建一个空文件(如linux的touch命令)
- DLL文件究竟是什么,它们是如何工作的?
- ArrayBuffer到base64编码的字符串
- 如何检查字符串是否为unicode或ascii?
- 键盘快捷键将剪贴板内容粘贴到命令提示符窗口(winxp)
- 如何检测文本文件的编码/编码页?
- 通过批处理或cmd文件停止和启动服务?