txtファイルのエンコードを変更する


16

私が書くとき:

file file1.txt 

私はこの出力を持っています:CR行ターミネータ付きのリトルエンディアンUTF-16 Unicodeテキスト

その後、私が書く場合:

file file2.txt 

私が持っている: ASCIIテキスト

file2.txtは、次のようにして作成されます。

echo $var > "file2.txt"

file2.txtにはfile1.txtと同じエンコーディングが必要です。どうやってやるの ?

回答:


25

iconvファイルのエンコーディングの変換に使用できます:

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

another.txt 目的のエンコードが必要です。

これを試すこともできます:

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


0

ファイルを変換するときは、バイト順マークが含まれていることを確認する必要があります。にもかかわらず、標準のバイトオーダーマークがUTF-8には推奨されていないと言いバイト順マークなしUTF-8とASCIIの間で合法的な混乱が存在することができます

さらに、バイト順マークを指定するUTF-16BEか先頭に追加UTF-16LE しないので、まずUTF-16プラットフォームに依存するエンディアンを使用するに変換します。次に、file実際のエンディアンを決定し、それからに変換しUTF-16LEます。

最後に、を使用してファイルを作成するbashと、ファイルはbashlocale 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

これを断念した場合、その理由を説明してください。
ヒース国境
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.