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