Что в файлах? Если это обычный текст на основе латинского алфавита, почти каждый второй байт файлов UTF-16LE будет равен нулю. С другой стороны, в файлах windows-1252 я не ожидал бы увидеть нули вообще. Например, вот “Hello”
в windows-1252:
93 48 65 6C 6C 6F 94
... и в UTF-16LE:
1C 20 48 00 65 00 6C 00 6C 00 6F 00 1D 20
Помимо фигурных кавычек, каждый символ отображается на одно и то же значение с добавлением завершающего нулевого байта. Фактически, это верно для каждого символа в наборе символов ISO-8859-1 (windows-1252 расширяет ISO-8859-1, добавляя сопоставления для нескольких печатных символов - например, фигурных кавычек - для замены управляющих символов в диапазоне 0x80..0x9F
).
Если вы знаете, что все файлы являются либо windows-1252, либо UTF-16LE, все, что вам нужно, чтобы выяснить, какой именно, - это быстрое сканирование на нули. Есть веская причина, почему Chardet такой медленный и сложный, но в этом случае я думаю, что вы можете сойти с рук быстро и грязно.