Как конвертировать * .txt файл в Юникод - PullRequest
5 голосов
/ 08 марта 2009

У меня есть требование, когда клиент будет предоставлять файл в кодировке ANSI, но моя система может только успешно прочитать файл в формате UNICODE. Итак, как мне решить эту проблему? Я знаю, когда я «сохраняю как» файл в кодировке UNICODE, файл берется. Сложно заставить клиента выполнить наш запрос. Итак, могу ли я иметь какую-либо пакетную программу для этой папки, чтобы преобразовать этот файл в UNICODE, а затем забрать?

Ответы [ 8 ]

17 голосов
/ 08 марта 2009

iconv может сделать это:

Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.

 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output

 Information:
  -l, --list                 list all known coded character sets

 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
10 голосов
/ 08 марта 2009

Ни ANSI, ни Unicode не являются кодировками. Вам необходимо знать кодовую страницу ANSI входного файла и кодировку Unicode (UTF8 или UTF16 - LE или BE), прежде чем использовать один из предложенных инструментов (например, iconv).

5 голосов
/ 08 марта 2009

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

4 голосов
/ 08 марта 2009

Вы также можете легко конвертировать кодировки в python:

inf = open("infile.txt")
data = inf.read().decode("latin1")
inf.close()

outf = open("outfile.txt", "w")
outf.write(data.encode("utf-8"))
outf.close()
3 голосов
/ 08 марта 2009

Вот решение Powershell

$lines = gc "pathToFile"
$lines | out-file -enconding Unicode
2 голосов
/ 21 марта 2018

Вы можете создать простой сценарий оболочки (txt_convert.sh <infile> <outfile>):

#!/bin/sh

iconv -f `file -b --mime-encoding "$1"` -t utf8 "$1" -o "$2"

или просто используйте:

iconv -f `file -b --mime-encoding "<infile>"` -t utf8 "<infile>" -o "<outfile>"

Объяснение: команда 'file' определит кодировку вашего входного файла, который будет использоваться в качестве параметра кодировки ввода для 'iconv', который в этом случае будет выполнять преобразование в utf8 (вы можете заменить utf-8 любым выходной набор символов, который вам нравится, и iconv поддерживает (см .: iconv -l)

1 голос
/ 06 октября 2014

Я прошел через некоторые инструменты, упомянутые выше, многие из них требуют командной строки.

Я нашел гораздо более простой способ конвертировать файлы в Windows .

  1. Установить Блокнот2 (http://www.flos -freeware.ch / ). Это с открытым исходным кодом и бесплатно.

  2. Открыть файл в кодировке ANSI,

  3. Дважды щелкните слово «ANSI» внизу,

  4. Выберите новую кодировку, например "utf8"

  5. Сохранить файл.

Это всего лишь несколько кликов, чтобы выполнить работу.

Кроме того, вы можете легко просмотреть содержимое после двойной проверки.

Notepad2 имеет ряд преимуществ по сравнению с Notepad. Выделенный код, Отменить / Повторить и т. Д.

: D

0 голосов
/ 30 июля 2015

Рубиновый лайнер, fwiw:

ruby -e 'STDOUT.write STDIN.read.force_encoding(Encoding::WINDOWS_1252).encode!(Encoding::UTF_8)' < infile.csv > outfile.csv

Если ваш входной файл ужасен, вам может понадобиться кнопка STDIN.binmode; STDOUT.binmode; в начале сценария Ruby.

...