Подтвердить что ты не робот

Использование iconv для преобразования из UTF-16LE в UTF-8

Привет! Я пытаюсь преобразовать некоторые файлы журнала с сервера Microsoft SQL, но файлы закодированы с использованием UTf-16LE, и iconv, похоже, не может их преобразовать.

Я делаю:

iconv -f UTF-16LE -t UTF-8 <filename>

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

РЕДАКТИРОВАТЬ: Пожалуйста, смотрите новый ответ для отсутствующей опции

4b9b3361

Ответ 1

Я забыл переключатель -o!

Последняя команда:

iconv -f UTF-16LE -t UTF-8 <filename> -o <new-filename>

Ответ 2

Указанная вами команда выведет на стандартный вывод. Вы можете использовать параметр -o или перенаправить вывод:

с -o:

iconv -f UTF-16LE -t UTF-8 infile -o outfile

с pipeми:

iconv -f UTF-16LE -t UTF-8 infile > outfile

Оба приведут к желаемому результату.

Однако некоторые версии iconv (например, v1 в macOS) не поддерживают параметр -o, и вы увидите, что преобразованный текст выводится на стандартный вывод. В этом случае используйте опцию pipeопровода.