Змінити кодування файлу txt


16

Коли я пишу:

file file1.txt 

У мене є такий висновок: текст маленького ендіанічного UTF-16 Unicode, з терміналами CR

Тоді якщо я напишу:

file file2.txt 

У мене є: ASCII текст

file2.txt створюється шляхом виготовлення:

echo $var > "file2.txt"

Я хотів би, щоб файл2.txt мав таке ж кодування, як і файл1.txt. Як я можу це зробити?

Відповіді:


25

Ви можете використовувати iconvдля перетворення кодування файлу:

iconv -f ascii -t utf16 file2.txt > another.txt

another.txt тоді повинен мати бажане кодування.

Ви також можете спробувати це:

echo $var | iconv -f ascii -t utf16 > "file2.txt"

7

Використовуйте iconv:

echo "$var" | iconv --from-code=utf-8 --to-code=utf-16le --output=file2.txt

0

Перетворюючи файл, ви повинні бути впевнені, що він містить позначку порядку байти. Навіть незважаючи на те, що стандарт каже, що байт-порядок не рекомендований для UTF-8 , можуть існувати законні плутанини між UTF-8 та ASCII без позначки порядку байтів .

Крім того, вказуючи UTF-16BEабо UTF-16LE не додаючи позначку порядку байтів , тому я спочатку перетворююсь на це UTF-16, яке використовує залежність від платформи. Тоді я використовую fileдля визначення фактичної витримки та перетворення з цього в UTF-16LE.

Нарешті, при створенні файлу з допомогою bashфайл отримує bash«s locale charmapкодування, так це те, що вам потрібно відобразити с.

(Я прописую всі великі кодування, тому що, коли ви перераховуєте всі iconvпідтримувані кодування з iconv -lними, вони всі великі регістри.)

BASH_ENCODING="$( locale charmap | tr [:lower:] [:upper:] )"
echo $var | iconv -f "$BASH_ENCODING" -t UTF-16 > UTF-16-UNKNOWN-ENDIANNESS-FILE
FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNOWN-ENDIANNESS-FILE )"
iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNOWN-ENDIANNESS-FILE > file2.txt

Якби ви відмовились від цього, поясніть, чому?
Межі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.