Пакетные файлы для кодирования

Как я могу пакетно конвертировать файлы в каталог для их кодирования (например, ANSI-> UTF-8) с помощью команды или инструмента?

Для отдельных файлов редактор помогает, но как выполнять работу с массовыми файлами?

  • Как создать zip / tgz в Linux, чтобы у Windows были правильные имена файлов?
  • Может ли GNU sed (для Windows) обрабатывать Unicode? Если да, то это проблема с кодовой страницей / языковой версией или с коммутатором?
  • Как использовать mencoder для ускорения видео?
  • Можно ли изменить кодировку по умолчанию в блокноте?
  • Mint map number keys to higlight text
  • Как восстановить поврежденный файл Excel
  • Подключение к Интернету через телефон в Linux
  • Как загрузить части одного и того же файла из разных источников с помощью curl / wget?
  • Установка моноширинного шрифта на Emacs?
  • Как идентифицировать дистрибутив linux?
  • 8 Solutions collect form web for “Пакетные файлы для кодирования”

    Cygwin или GnuWin32 предоставляют инструменты Unix, такие как iconv и dos2unixunix2dos ). В Unix / Linux / Cygwin вы хотите использовать «windows-1252» в качестве кодировки вместо ANSI (см. Ниже). (Если вы не знаете, что ваша система использует кодовую страницу, отличную от 1252, в качестве кодовой страницы по умолчанию, в этом случае вам нужно будет указать iconv правильную кодовую страницу для перевода.)

    Преобразование из одного ( -f ) в другое ( -t ) с помощью:

     $ iconv -f windows-1252 -t utf-8 infile > outfile 

    Или в форме «все-и-завоевание»:

     ## this will clobber the original files! $ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \; 

    В качестве альтернативы:

     ## this will clobber the original files! $ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \; 

    Этот вопрос неоднократно задавался на этом сайте, поэтому вот дополнительная информация о «ANSI». В ответе на соответствующий вопрос, CesarB упоминает :

    Существует несколько кодировок, которые называются «ANSI» в Windows. Фактически, ANSI является неправильным . Iconv не имеет способа угадать, чего вы хотите.

    Кодировка ANSI – это кодировка, используемая функциями «A» в Windows API (функции «W» используют UTF-16). Какая кодировка соответствует обычно зависит от вашего системного языка Windows. Наиболее распространенным является CP 1252 (также известный как Windows-1252). Итак, когда ваш редактор говорит ANSI, это означает «независимо от того, какие функции API используют в качестве кодировки ANSI по умолчанию», которая является стандартной кодировкой, отличной от Unicode, используемой в вашей системе (и, как правило, тем, которая используется для текстовых файлов).

    Страница, на которую он ссылается, дает этот исторический лакомый кусочек (цитируется в Microsoft PDF ) о происхождении CP 1252 и ISO-8859-1, еще одной часто используемой кодировки:

    […] это происходит из-за того, что кодовая страница Windows 1252 изначально была основана на проекте ANSI, который стал стандартом ISO 8859-1. Однако при добавлении кодовых пунктов к диапазону, зарезервированному для управляющих кодов в стандарте ISO, кодовая страница Windows 1252 и последующие кодовые страницы Windows, первоначально основанные на серии ISO 8859-x, отклонялись от ISO. По сей день нередко есть сообщество разработчиков, как внутри, так и за пределами Microsoft, путают кодовую страницу 8859-1 с Windows 1252, а также см. «ANSI» или «A», используемые для обозначения поддержки кодовых страниц Windows ,

    С powershell вы можете сделать что-то вроде этого:

     % get-content IN.txt | out-file -encoding ENC -filepath OUT.txt 

    В то время как ENC – это что-то вроде unicode, ascii, utf8, utf32. Checkout 'help out-file'.

    Для преобразования всех файлов * .txt в каталог в utf8 выполните следующие действия:

     % foreach($i in ls -name DIR/*.txt) { \ get-content DIR/$i | \ out-file -encoding utf8 -filepath DIR2/$i \ } 

    Который создает преобразованную версию каждого .txt-файла в DIR2.

    EDIT: для замены файлов во всех подкаталогах используйте:

     % foreach($i in ls -recurse -filter "*.java") { $temp = get-content $i.fullname out-file -filepath $i.fullname -inputobject $temp -encoding utf8 -force } 

    На странице Википедии на новостях есть раздел об утилитах конверсии .

    Это лучше всего подходит для конверсии, используя только инструменты Windows:

     TYPE unix_file | FIND "" /V > dos_file 

    UTFCast – это конвертер Unicode для Windows, который поддерживает пакетный режим. Я использую платный вариант, и мне это очень удобно.

    UTFCast – это конвертер Unicode, который позволяет вам конвертировать все текстовые файлы в кодировки UTF одним щелчком мыши. Вы можете использовать его для преобразования каталога, полного текстовых файлов, в кодировки UTF, включая UTF-8, UTF-16 и UTF-32 в выходной каталог, при сохранении структуры каталогов исходных файлов. Даже не имеет значения, имеет ли ваш текстовый файл другое расширение, UTFCast может автоматически обнаруживать текстовые файлы и преобразовывать их.

    В unix есть dos2unix .
    Был еще один аналогичный инструмент для Windows ( еще один здесь ).

    Как конвертировать между текстовыми файлами Unix и Windows? Имеет еще несколько трюков

    Вы можете использовать EncodingMaster . Это бесплатно, у него есть версия для Windows, Linux и Mac OS X и работает очень хорошо.

    iconv -f original_charset -t utf-8 originalfile > newfile

    Выполните приведенную выше команду в цикле for.

    Oneliner с помощью find, с автоматическим обнаружением

    Кодировка символов всех соответствующих текстовых файлов определяется автоматически и все соответствующие текстовые файлы преобразуются в кодировку utf-8 :

     $ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \; 

    Чтобы выполнить эти шаги, суб-оболочка sh используется с -exec , работает однострочный с флагом -c и передает имя файла в качестве позиционного аргумента "$1" с -- {} . В промежутке выходной файл utf-8 временно называется converted .

    Команда find очень полезна для такой автоматизации управления файлами.

    Нажмите здесь, чтобы find больше .

    Давайте будем гением компьютера.