Лучший способ конвертировать текстовые файлы между наборами символов?

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

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

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

Лучшие решения:

В Linux/UNIX/OS X/cygwin:

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

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

    Как отметил Ben, есть онлайн-конвертер recode (руководство), предложенный 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 Latin с кодировкой Base64 с окончанием строки Dos:

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

В Windows с Powershell (Джей Базузи):

  • 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

Примечание. Возможными значениями перечисления являются "Неизвестный, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

+496
15 сент. '08 в 17:21
источник поделиться
17 ответов

Автономный сервисный подход

iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING  the encoding of the input
-t ENCODING  the encoding of the output

Вам не нужно указывать ни один из этих аргументов. По умолчанию они будут соответствовать вашей текущей локали (обычно это UTF-8).

+223
15 сент. '08 в 17:24
источник

Попробуйте VIM

Если у вас есть vim, вы можете использовать это:

Не тестируется для каждой кодировки.

Прохладная часть об этом заключается в том, что вам не нужно знать исходную кодировку

vim +"set nobomb | set fenc=utf8 | x" filename.txt

Помните, что эта команда непосредственно изменяет файл


Объяснение!

  • +: используется vim для непосредственного ввода команды при открытии файла. Обычно используется для открытия файла в определенной строке: vim +14 file.txt
  • |: разделитель нескольких команд (например, ; в bash)
  • set nobomb: нет спецификации utf-8
  • set fenc=utf8: установите новую кодировку в utf-8 doc link
  • x: сохранить и закрыть файл
  • filename.txt: путь к файлу
  • ": qotes здесь из-за труб. (иначе bash будет использовать их как bash pipe)
+80
30 сент. '15 в 8:41
источник
другие ответы

Связанные вопросы


Похожие вопросы

В Linux вы можете использовать очень мощную команду recode, чтобы попытаться преобразовать между различными кодировками, а также любые проблемы с окончанием строки. recode -l покажет вам все форматы и кодировки, которые инструмент может конвертировать между ними. Вероятно, это будет ОЧЕНЬ длинный список.

+36
15 сент. '08 в 17:24
источник

iconv (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

Также на многих языках есть инструменты на основе значков.

+20
15 сент. '08 в 17:23
источник
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT

Самая короткая версия, если вы можете предположить, что введенная спецификация верна:

gc FILE.TXT | Out-File -en utf7 file-utf7.txt
+19
15 сент. '08 в 17:29
источник

Попробуйте iconv Bash function

Я поместил это в .bashrc:

utf8()
{
    iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
    rm $1
    mv $1.tmp $1
}

.., чтобы иметь возможность конвертировать файлы следующим образом:

utf8 MyClass.java
+16
06 дек. '11 в 14:43
источник

Попробуйте Блокнот ++

В Windows я смог использовать Notepad ++ для преобразования из ISO-8859-1 в UTF-8. Нажмите "Encoding", а затем "Convert to UTF-8".

+13
07 июн. '12 в 14:30
источник

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 флагом -c и передающую имя файла в качестве позиционного аргумента "$1" с -- {}. Между ними выходной файл utf-8 временно называется converted.

При этом file -bi означает:

  • -b, --brief Не --brief имена файлов в выходные строки (краткий режим).

  • -i, --mime Заставляет команду file выводить строки типа mime, а не более традиционные для человека. Таким образом, это может сказать, например, text/plain; charset=us-ascii text/plain; charset=us-ascii а не ASCII text. Команда sed обрезает это только для us-ascii как того требует iconv.

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

+9
28 авг. '16 в 19:46
источник

PHP iconv()

iconv("UTF-8", "ISO-8859-15", $input);

+3
17 сент. '08 в 6:18
источник

DOS/Windows: используйте кодовую страницу

chcp 65001>NUL
type ascii.txt > unicode.txt

Команда chcp может использоваться для изменения кодовой страницы. Кодовая страница 65001 - это имя Microsoft для UTF-8. После установки кодовой страницы вывод, сгенерированный следующими командами, будет иметь кодовую страницу.

+2
27 июн. '17 в 19:33
источник

Yudit редактор поддерживает и конвертирует между многими различными текстовыми кодировками, работает в linux, windows, mac и т.д.

-Adam

+1
15 сент. '08 в 17:25
источник

для записи файла свойств (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: я набрал Execution number one/two в portugues, чтобы заставить специальные символы.

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

$ 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), проблема была закончена.

Я надеюсь, что это поможет кому-то.

+1
28 нояб. '16 в 19:32
источник

С рубином:

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 июн. '18 в 6:25
источник

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

0
01 июл. '18 в 10:17
источник

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

  • Один, который позволяет пользователю перезагружать текст с другим кодированием (и, как таковой, для визуального контроля результата)
  • Другой, который позволяет пользователю явно выбирать кодировку (и конец строки) перед сохранением
0
17 сент. '18 в 11:08
источник

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

0
09 окт. '18 в 16:45
источник

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

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

-1
26 июн. '13 в 19:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос