是否有适用于 Windows 的工具(命令行、GUI、脚本等)可以递归目录并识别所有以 UTF-16 编码的文件?
答案1
此工具允许您根据标准信息(例如搜索模式和文件路径)检测文件编码类型:
文件编码检查器是一个 GUI 工具,可用于验证一个或多个文件的文本编码。该工具可以显示所有选定文件的编码,或仅显示未指定编码的文件。
我自己没有用过它,所以你可能想检查一下。
答案2
一种缓慢的方法是使用任何转换实用程序并针对目录中的所有文件运行它。那些成功从 UTF-16 转换为其他格式的文件很可能就是您需要的文件。对于该任务,您可以选择一个可用的工具,例如字符集转换器。
或者你可以使用本文中的 C++ 代码片段编写这样的工具C++/Win32 中 Unicode UTF-16 与 UTF-8 之间的转换. 自定义工具可以进行优化以放弃第一次转换错误并且不将转换后的缓冲区保存到文件中。
答案3
对于带有 BOM 的 UTF-16 文件 - PowerShell 命令
gci . -Include *.txt -Recurse | `
% { $c = gc $_.FullName -TotalCount 2 -Encoding Byte; `
if ( $c.Length -gt 0 -and `
(($c[0] -eq 255 -and $c[1] -eq 254) -or `
($c[0] -eq 254 -and $c[1] -eq 255)) `
) {$_.FullName} `
}
答案4
制作一个并不难,读取每个文件的前两个字节,看看它们是否分别设置为 FF FE(windows)。