Существует ли для Windows инструмент (командная строка, графический интерфейс, скрипт и т. Д.), Который может создать каталог и идентифицировать все файлы, закодированные как UTF-16?
Вообще говоря, нет способа автоматически и без ошибок обнаружить кодировку текстового файла. Сказав это: если содержимое на самом деле является просто символами из диапазона ASCII (или в основном из этого диапазона), то проверка файлов, в которых находится каждый второй байт, является 0хорошим началом.
Йоахим Зауэр
1
@Joachim: я думаю, что для достаточно больших файлов ошибки обнаружения должны быть незначительными. Нечто вроде «Буш скрыл факты» становится экспоненциально невозможным, когда количество персонажей достаточно велико.
Филипп
1
@ Филипп: я даже не знал об этом конкретном случае. Спасибо! Но количество ошибок ожидать зависит много от фактического содержания файлов: если это все в основном английский текст ASCII, то скорость обнаружения будет очень хорошо (идеально или почти идеально, я думаю). Но если у вас есть кодированные в UTF-16 тексты на китайском, арабском, суахили и индусском языке в дополнение к множеству двоичных данных, то это будет намного хуже.
Йоахим Зауэр
2
@ Йоахим: Согласен. Исходя из моего опыта, файлы UTF-16 без спецификации часто генерируются системными инструментами Windows (сценариями установщика, может быть, редактором реестра), поскольку такой файл, по сути, является дампом памяти строки UTF-16. Такие файлы часто содержат много разметки ASCII, что упрощает их идентификацию. И наоборот (решить, является ли файл UTF-16 действительно файлом UTF-16), конечно, гораздо сложнее. Возможно, можно было бы проверить, принадлежат ли большие части файла одному сценарию, встречаются ли последовательности CRLF в UTF-16 и т. Д.
File Encoding Checker - это инструмент с графическим интерфейсом, который позволяет проверять кодировку текста одного или нескольких файлов. Инструмент может отображать кодировку для всех выбранных файлов или только для файлов, которые не имеют указанных кодировок.
Я не использовал это сам, так что вы можете проверить это.
Медленным способом было бы взять любую утилиту преобразования и запустить ее для всех файлов в каталоге. Эти файлы, успешно преобразованные из UTF-16 в другой формат, скорее всего, вам нужны. Для этой задачи вы можете выбрать доступный инструмент, такой как Конвертер набора символов .
Или вы можете написать такой инструмент, используя фрагмент кода C ++ из этой статьи. Преобразование между Unicode UTF-16 и UTF-8 в C ++ / Win32 . Пользовательский инструмент может быть оптимизирован, чтобы избавиться от первой ошибки преобразования и не сохранять преобразованный буфер в файл.
0
хорошим началом.Ответы:
Этот инструмент позволяет определить тип кодировки файла с учетом стандартной информации, такой как шаблон поиска и путь к файлу:
Проверка кодировки файлов
Я не использовал это сам, так что вы можете проверить это.
источник
Медленным способом было бы взять любую утилиту преобразования и запустить ее для всех файлов в каталоге. Эти файлы, успешно преобразованные из UTF-16 в другой формат, скорее всего, вам нужны. Для этой задачи вы можете выбрать доступный инструмент, такой как Конвертер набора символов .
Или вы можете написать такой инструмент, используя фрагмент кода C ++ из этой статьи. Преобразование между Unicode UTF-16 и UTF-8 в C ++ / Win32 . Пользовательский инструмент может быть оптимизирован, чтобы избавиться от первой ошибки преобразования и не сохранять преобразованный буфер в файл.
источник
Для файлов UTF-16 с спецификацией - команда PowerShell
источник
Нетрудно сделать один, прочитать первые два байта каждого файла и посмотреть, установлены ли они в FF FE (окна) соответственно.
источник