Проверка всех файлов в кодировке UTF-8 - PullRequest
0 голосов
/ 18 ноября 2009

Кто-нибудь знает приложение для Windows, которое может сканировать каталог и проверять, какие сценарии закодированы / не закодированы как указанный набор символов (в данном случае UTF-8)? Я мог бы сделать это вручную, но это может занять некоторое время и может привести к ошибкам!

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

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 голос
/ 18 ноября 2009

Не уверен, что это именно то, что вы ищете, но я использую командную оболочку for-loop и выгружаю первые несколько байтов каждого файла, используя мою утилиту hdump, которая отображает байты файла в шестнадцатеричной форме. , Затем я ищу начальную 3-байтовую сигнатуру UTF-8 (Byte Order Mark) в начале каждого файла.

Моя hdump утилита доступна по адресу: http://david.tribble.com/programs.html

...