检查所有文件的编码为UTF-8

时间:2009-11-18 02:59:04

标签: windows character-encoding utility

有没有人知道可以扫描目录并检查哪些脚本未编码为指定字符集的Windows应用程序(在本例中为UTF-8)?我可以手动完成,但这可能需要一段时间,而且非常容易出错!

2 个答案:

答案 0 :(得分:2)

UTF-8不是字符集,它是Unicode字符的编码。而且,由于这与编程没有关系,我将其推向超级用户。

如果你想要编写一个用于检测这些序列的程序,那很简单:

Illegal UTF-8 initial sequences

UTF-8 Sequence       Reason for Illegality 
10xxxxxx             illegal as initial byte of character (80..BF) 
1100000x             illegal, overlong (C0 80..BF) 
11100000  100xxxxx   illegal, overlong (E0 80..9F) 
11110000  1000xxxx   illegal, overlong (F0 80..8F) 
11111000  10000xxx   illegal, overlong (F8 80..87) 
11111100  100000xx   illegal, overlong (FC 80..83) 
1111111x             illegal; prohibited by spec 

然后,如果第一个八位字节是合法的,只需记住,通过计算第一个1位之前0位的数量,可以获得形成代码点的八位字节数。

例如,11110xxx是4个八位字节序列的开头,因此一旦确定了合法性,就应该跳过4个八位字节。

要做的另一件事是确保所有连续八位字节以10开头。

答案 1 :(得分:1)

不确定这是否是您正在寻找的,但我使用命令shell for-loop并使用我的hdump实用程序转储每个文件的前几个字节,该实用程序显示文件的字节十六进制形式。然后我在每个文件的开头寻找前导的3字节UTF-8签名(字节顺序标记)。

我的hdump实用程序位于:http://david.tribble.com/programs.html