Лучший способ конвертировать текстовые файлы между наборами символов? - PullRequest
495 голосов
/ 15 сентября 2008

Какой самый быстрый и простой инструмент или метод для преобразования текстовых файлов между наборами символов?

В частности, мне нужно конвертировать из UTF-8 в ISO-8859-15 и наоборот.

Все идет: одна строка на вашем любимом языке сценариев, инструменты командной строки или другие утилиты для ОС, веб-сайтов и т.д.

Лучшие решения на данный момент:

В Linux / UNIX / OS X / cygwin:

  • Gnu iconv предложено Троэльс Арвин лучше всего использовать в качестве фильтра . Кажется, это универсально доступно. Пример:

    $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
    

    Как указывает Бен , существует онлайн-конвертер с использованием iconv .

  • Gnu перекодировать ( руководство ), предложенное Cheekysoft , преобразует один или несколько файлов на месте . Пример:

    $ recode UTF8..ISO-8859-15 in.txt
    

    Этот использует более короткие псевдонимы:

    $ recode utf8..l9 in.txt
    

    Recode также поддерживает поверхностей , которые можно использовать для преобразования между различными типами окончания строки и кодировками:

    Конвертировать переводы строк из LF (Unix) в CR-LF (DOS):

    $ recode ../CR-LF in.txt
    

    Файл кодирования Base64:

    $ recode ../Base64 in.txt
    

    Вы также можете комбинировать их.

    Преобразование файла UTF8 в кодировке Base64 с окончаниями строк Unix в файл Latin 1 в кодировке Base64 с окончаниями строк Dos:

    $ recode utf8/Base64..l1/CR-LF/Base64 file.txt
    

В Windows с Powershell ( Jay Bazuzi ):

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

    (хотя поддержка ISO-8859-15 не поддерживается; в нем говорится, что поддерживаются кодировки unicode, utf7, utf8, utf32, ascii, bigendianunicode, default и oem.)

Редактировать

Вы имеете в виду поддержку iso-8859-1? Использование "String" делает это, например, для наоборот

gc -en string in.txt | Out-File -en utf8 out.txt

Примечание. Возможные значения перечисления: «Неизвестно, Строка, Юникод, Байт, BigEndianUnicode, UTF8, UTF7, Ascii».

Ответы [ 16 ]

1 голос
/ 28 ноября 2016

для записи файла свойств (Java) обычно я использую это в Linux (дистрибутивы mint и ubuntu):

$ native2ascii filename.properties

Например:

$ cat test.properties 
first=Execução número um
second=Execução número dois

$ native2ascii test.properties 
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois

PS: я написал исполнение номер один / два на португальском языке, чтобы заставить специальные символы.

В моем случае при первом исполнении я получил это сообщение:

$ native2ascii teste.txt 
The program 'native2ascii' can be found in the following packages:
 * gcj-5-jdk
 * openjdk-8-jdk-headless
 * gcj-4.8-jdk
 * gcj-4.9-jdk
Try: sudo apt install <selected package>

Когда я установил первый вариант (gcj-5-jdk), проблема была закончена.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 09 октября 2018

Просто измените кодировку загруженного файла в IDE IntelliJ, справа от строки состояния (внизу), где указана текущая кодировка. Он предлагает перезагрузить или конвертировать, используйте конвертировать. Убедитесь, что вы создали резервную копию исходного файла заранее.

0 голосов
/ 17 сентября 2018

Мой любимый инструмент для этого - Jedit (текстовый редактор на основе Java), который имеет две очень удобные функции:

  • Тот, который позволяет пользователю перезагрузить текст с другой кодировкой (и, таким образом, визуально контролировать результат)
  • Еще один способ, позволяющий пользователю явно выбирать кодировку (и конец строки) перед сохранением
0 голосов
/ 01 июля 2018

Используйте этот скрипт Python: https://github.com/goerz/convert_encoding.py Работает на любой платформе. Требуется Python 2.7.

0 голосов
/ 26 июня 2018

с рубином:

ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"

Источник: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences

0 голосов
/ 26 июня 2013

Как описано в Как исправить кодировку символов файла? Synalyze It! позволяет вам легко конвертировать в OS X все кодировки, поддерживаемые библиотекой ICU .

Кроме того, вы можете отобразить несколько байтов файла, переведенного в Unicode из всех кодировок, чтобы быстро увидеть, какой файл вам подходит.

...