0

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

4

2 回答 2

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.

于 2009-11-18T03:06:58.700 回答
1

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

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

于 2009-11-18T03:07:39.633 回答