Какой самый быстрый и простой инструмент или метод для преобразования текстовых файлов между наборами символов?
В частности, мне нужно конвертировать из 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
Как отметил Бен , есть онлайн-конвертер, использующий 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 ( Джей Базузи ):
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».
- CsCvt - Конвертер наборов символов Kalytta - еще один замечательный инструмент для конвертации Windows, основанный на командной строке.
источник
gc -en Ascii readme.html | Out-File -en UTF8 readme.html
но он конвертирует файл в UTF-8, но тогда он пуст! Notepad ++ говорит, что файл в формате Ansi, но, как я понимаю, читается, что это даже не правильный набор символов ?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFrecode
будет действовать как фильтр, если вы не передадите ему имя файла, например:recode utf8..l9 < in.txt > out.txt
enca
, вам не нужно указывать кодировку ввода. Достаточно часто просто указать язык:enca -L ru -x utf8 FILE.TXT
.iconv -f UTF-32 -t UTF-8 input.csv > output.csv
сохраненных только около семисот тысяч строк, только трети. С помощью версии на местеiconv -f UTF-32 -t UTF-8 file.csv
успешно преобразуются все 2 миллиона плюс строк.Ответы:
Автономный сервисный подход
Вам не нужно указывать ни один из этих аргументов. По умолчанию они будут соответствовать вашей текущей локали (обычно это UTF-8).
источник
iconv -l | grep UTF
расскажет вам обо всех UTF-кодировках, которые поддерживает ваша копия iconv.chardet in.txt
для генерации лучшего предположения. Результат может быть использован как ENCODING вiconv -f ENCODING
.illegal input sequence at position
сообщений), и заменить «странные» символы с «похожими» символы:iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT in.txt > out.txt
.ex
) ниже . Дополнительная информация: (1) вам (вероятно) не нужно указывать параметр-f
(from) с помощьюiconv
. (2)file --mime-encoding <file/s>
команда может помочь вам выяснить кодировку в первую очередь.file
команда сообщила, что мой источник UTF-16 Little Endian; Бегiconv -f UTF-16 -t UTF-8...
преобразовал его неправильно в ASCII, я должен был явно указатьiconv -f UTF-16LE...
для вывода UTF-8Попробуйте VIM
Если у вас есть,
vim
вы можете использовать это:Не проверено для каждой кодировки.
Самое интересное в этом то, что вам не нужно знать кодировку источника
Имейте в виду, что эта команда изменяет непосредственно файл
Пояснительная часть!
+
: Используется vim для непосредственного ввода команды при открытии файла. Обычно используется для открытия файла в определенной строке:vim +14 file.txt
|
: Разделитель нескольких команд (как;
в bash)set nobomb
: нет utf-8 спецификацияset fenc=utf8
: Установить новую кодировку для ссылки на документацию utf-8x
: Сохранить и закрыть файлfilename.txt
: путь к файлу"
: цитаты здесь из-за труб. (иначе bash будет использовать их как трубу bash)источник
vim -b
илиhead file.txt|cat -e
find -regextype posix-extended -type f -regex ".*\.(h|cpp|rc|fx|cs|props|xaml)" -exec vim +'set nobomb | set fenc=utf8 | x' {} \;
В Linux вы можете использовать очень мощную команду recode, чтобы попытаться преобразовать различные кодировки, а также любые проблемы с окончанием строки. recode -l покажет вам все форматы и кодировки, между которыми инструмент может конвертироваться. Вероятно, это будет ОЧЕНЬ длинный список.
источник
LF
? Есть/CR
и/CR-LF
нет/LF
Iconv (1)
Также есть инструменты на базе iconv на многих языках.
источник
Кратчайшая версия, если вы можете предположить, что входная спецификация верна:
источник
gc .\file-utf8.txt | sc -en utf7 .\file-utf7.txt
Set-Content
работает лучше, чемOut-File
?file-utf8.txt
файл для ввода, так как у них был один и тот же выходной файлfile-utf7.txt
.gc -en Ascii readme.html | Out-File -en UTF8 readme.html
но он конвертирует файл в UTF-8, но тогда он пуст! Notepad ++ говорит, что файл в формате Ansi, но, как я понимаю, читается, что это даже не правильный набор символов ?? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFПопробуйте функцию iconv Bash
Я положил это в
.bashrc
:... чтобы иметь возможность конвертировать файлы так:
источник

в начале файла.Попробуйте Notepad ++
В Windows я смог использовать Notepad ++ для преобразования из ISO-8859-1 в UTF-8 . Нажмите
"Encoding"
и затем"Convert to UTF-8"
.источник
Oneliner использует find с автоматическим определением набора символов
Кодировка символов всех соответствующих текстовых файлов определяется автоматически, и все соответствующие текстовые файлы преобразуются в
utf-8
кодировку:Для выполнения этих шагов, к югу от оболочки
sh
используются с-exec
, работает один вкладыш с-c
флагом, и передавая имя файла в качестве позиционного аргумента"$1"
с-- {}
. Между нимиutf-8
выходной файл временно названconverted
.Посредством чего
file -bi
означает:-b
,--brief
Не добавляйте имена файлов в выходные строки (краткий режим).-i
,--mime
Заставляет команду file выводить строки типа mime, а не более традиционные для человека. Таким образом, это может сказать, например,text/plain; charset=us-ascii
а неASCII text
. Командаsed
обрезает это только так,us-ascii
как того требуетiconv
.Команда
find
очень полезна для такой автоматизации управления файлами. Нажмите здесь, чтобы узнать большеfind
.источник
find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -b --mime-encoding "$1" | awk "{print toupper(\$0)}") -t UTF-8 > converted "$1" && mv converted "$1"' -- {} \;
sed
команда специально предназначена для автоматического определения кодировки символов. Я расширил ответ, чтобы объяснить это сейчас. В отношении читателей было бы вежливо удалить любые оставшиеся не относящиеся к делу комментарии. Спасибо.PHP iconv ()
iconv("UTF-8", "ISO-8859-15", $input);
источник
DOS / Windows: используйте кодовую страницу
Команда
chcp
может быть использована для изменения кодовой страницы. Кодовая страница 65001 - это имя Microsoft для UTF-8. После установки кодовой страницы выходные данные, генерируемые следующими командами, будут иметь установленную кодовую страницу.источник
чтобы написать файл свойств (Java) обычно я использую это в Linux (дистрибутивы Mint и Ubuntu):
Например:
PS: я написал исполнение номер один / два на португальском языке, чтобы заставить специальные символы.
В моем случае при первом исполнении я получил это сообщение:
Когда я установил первый вариант (gcj-5-jdk), проблема была закончена.
Я надеюсь, что это поможет кому-то.
источник
С рубином:
Источник: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequence
источник
Используйте этот скрипт Python: https://github.com/goerz/convert_encoding.py Работает на любой платформе. Требуется Python 2.7.
источник
Мой любимый инструмент для этого - Jedit (текстовый редактор на основе Java), который имеет две очень удобные функции:
источник
Просто измените кодировку загруженного файла в IntelliJ IDEA IDE, справа от строки состояния (внизу), где указана текущая кодировка. Он предлагает перезагрузить или конвертировать, используйте конвертировать. Убедитесь, что вы сделали резервную копию оригинального файла заранее.
источник
Если приложения MacOS с графическим пользовательским интерфейсом - ваш хлеб с маслом, SubEthaEdit - это текстовый редактор , к которому я обычно обращаюсь для кодирования-ссор - его «предварительный просмотр преобразования» позволяет вам видеть все недопустимые символы в выходной кодировке и исправлять / удалять их.
И это с открытым исходным кодом , так что Yay для них 😉.
источник
Как описано в разделе Как исправить кодировку символов в файле? Synalyze It! позволяет легко конвертировать в OS X все кодировки, поддерживаемые библиотекой ICU .
Кроме того, вы можете отобразить несколько байтов файла, переведенного в Unicode из всех кодировок, чтобы быстро увидеть, какой из них подходит для вашего файла.
источник