Каков лучший способ идентифицировать текстовые файлы в кодировке Юникод в Windows? - PullRequest
13 голосов
/ 12 января 2011

Я работаю над базой кода, в которой есть несколько файлов в кодировке Юникода, разбросанных по всему в результате того, что несколько членов команды работают с разными редакторами (и настройками по умолчанию).Я хотел бы очистить нашу кодовую базу, найдя все файлы в кодировке Unicode и преобразовав их обратно в кодировку ANSI.

Любые мысли о том, как выполнить «поиск» части этой задачи, будут по-настоящему оценены.

Ответы [ 5 ]

5 голосов
/ 13 января 2011

См. & ldquo; Как определить кодировку символов текстового файла? & Rdquo; или & ldquo; Как надежно угадать кодировку [...]? & Rdquo;

  • UTF-8 может быть обнаружен с проверкой. Вы также можете искать спецификацию EF BB BF, но не полагайтесь на нее.
  • UTF-16 может быть обнаружен при поиске спецификации.
  • UTF-32 может быть обнаружен с помощью проверки или спецификации.
  • В противном случае используйте кодовую страницу ANSI.

Наша кодовая база не включает не ASCII-символы. Я постараюсь grep для спецификации в файлах в нашей кодовой базе. Спасибо за разъяснения.

Ну, это делает вещи на 1022 * много проще. UTF-8 без символов ASCII равен ASCII.

4 голосов
/ 12 января 2011

Юникод - это стандарт, это не кодировка. Существует много кодировок, которые реализуют Unicode, включая UTF-8, UTF-16, UCS-2 и другие. Перевод любой из этих кодировок в ASCII полностью зависит от того, какую кодировку используют ваши «разные редакторы».

Некоторые редакторы вставляют метки порядка байтов спецификаций в начале файлов Unicode. Если ваши редакторы делают это, вы можете использовать их для определения кодировки.

ANSI является органом по стандартизации, который опубликовал несколько кодировок для цифровых символьных данных. Кодировка «ANSI», используемая в MS DOS и поддерживаемая в Windows, фактически является CP-1252, а не стандартом ANSI.

Содержит ли ваша кодовая база не-ASCII символы? У вас может быть лучшая совместимость при использовании кодировки Unicode, а не ANSI или CP-1252.

2 голосов
/ 22 августа 2013

На самом деле, если вы хотите выяснить в Windows, является ли файл юникодом, просто запустите findstr для файла, который, как вы знаете, находится там.

findstr / I / C: файл SomeKnownString file.txt

Он вернется пустым. Затем, чтобы быть уверенным, запустите findstr для буквы или цифры, которая, как вы знаете, находится в файле:

FindStr / I / C: "P" file.txt

Вы, вероятно, получите много вхождений, и ключ в том, что они будут разнесены. Это признак того, что файл является unicode, а не ascii.

Надеюсь, это поможет.

1 голос
/ 13 января 2011

Если вы ищете программное решение, IsTextUnicode () может быть вариантом.

0 голосов
/ 12 января 2011

Трудно сказать, но я бы начал с поиска спецификации.Большинство программ Windows, которые пишут файлы Unicode, испускают спецификации.

Если эти файлы существуют в вашей кодовой базе, предположительно они компилируются.Вы можете спросить себя, действительно ли вам нужно сделать эту «уборку».Если вам нужно сделать это, я бы спросил, как цепочка инструментов, которая обрабатывает эти файлы, обнаруживает их кодировку.Если вы это знаете, то сможете использовать ту же диагностику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...