Ubah penyandian file txt


16

Ketika saya menulis:

file file1.txt 

Saya memiliki output ini: Teks Unicode UTF-16 Little-endian, dengan terminator garis CR

Maka jika saya menulis:

file file2.txt 

Saya punya: teks ASCII

file2.txt dibuat dengan membuat:

echo $var > "file2.txt"

Saya ingin file2.txt memiliki penyandian yang sama dari file1.txt. Bagaimana saya bisa melakukan itu?

Jawaban:


25

Anda dapat menggunakan iconvuntuk mengonversi penyandian file:

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

another.txt seharusnya memiliki pengkodean yang diinginkan.

Anda juga dapat mencoba ini:

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

7

Gunakan ikonv:

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

0

Saat mengonversi file Anda, Anda harus yakin itu berisi tanda byte-order. Meskipun standar mengatakan tanda byte-order-tidak direkomendasikan untuk UTF-8 , mungkin ada kebingungan yang sah antara UTF-8 dan ASCII tanpa tanda byte-order .

Selain itu, menentukan UTF-16BEatau UTF-16LE tidak menambahkan tanda byte-order , jadi saya pertama mengonversi ke UTF-16, yang menggunakan endianness yang bergantung pada platform. Kemudian, saya gunakan fileuntuk menentukan endianness aktual dan konversi dari itu ke UTF-16LE.

Akhirnya, ketika Anda membuat file menggunakan bash, file menerima bash's locale charmapencoding, sehingga ini apa yang Anda butuhkan untuk memetakan dari.

(Saya huruf besar semua pengkodean saya karena ketika Anda mendaftar semua iconvpengkodean yang didukung dengan iconv -lmereka semua huruf besar.)

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

Jika Anda menurunkan ini, akankah Anda menjelaskan mengapa?
Perbatasan Heath
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.