Linux でファイルを UTF-8 エンコーディングに変換する方法
このガイドでは、文字エンコーディングについて説明し、コマンド ライン ツールを使用してファイルをある文字エンコーディングから別の文字エンコーディングに変換する例をいくつか取り上げます。最後に、Linux で複数のファイルを任意の文字セット (文字セット) からUTF-8 エンコーディングに変換する方法を見ていきます。
おそらくすでに念頭に置いているかもしれませんが、コンピューターは文字、数字、その他人間が認識できるビット以外のものを理解したり保存したりすることはありません。ビットには 2 つの値しかありません。それは、0
または 1
、true
または false
、 のいずれかです。 >はい
またはいいえ
。文字、数字、画像など、その他すべてのものは、コンピューターが処理できるようにビットで表現する必要があります。
簡単に言うと、文字エンコーディングは、生の 0 と 1 を実際の文字に解釈する方法をコンピュータに伝える方法であり、文字は一連の数字で表されます。私たちがファイルにテキストを入力するとき、私たちが形成する単語や文章はさまざまな文字から調理され、 文字は文字セットに編成されます。
世の中には、ASCII、ANSI、Unicodeなど、さまざまなエンコード スキームがあります。以下はASCII エンコードの例です。
Character bits
A 01000001
B 01000010
Linux では、iconv コマンド ライン ツールを使用して、テキストをあるエンコード形式から別の形式に変換します。
file コマンドを使用し、MIME タイプの出力を有効にする -i
または --mime
フラグを使用してファイルのエンコードを確認できます。以下の例のような文字列:
file -i Car.java
file -i CarDriver.java
iconv を使用するための構文は次のとおりです。
iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
-f
または --from-code
は入力エンコーディングを意味し、-t
または --to-encoding
は指定します。出力エンコーディング。
既知のコード化文字セットをすべてリストするには、以下のコマンドを実行します。
iconv -l
ファイルを UTF-8 から ASCII エンコーディングに変換する
次に、あるエンコード スキームから別のエンコード スキームに変換する方法を学びます。以下のコマンドは、ISO-8859-1 エンコーディングから UTF-8 エンコーディングに変換します。
次の文字が含まれる input.file
という名前のファイルについて考えてみましょう。
� � � �
まずファイル内の文字のエンコードを確認してから、ファイルの内容を表示してみましょう。厳密に言えば、 すべての文字をASCII エンコードに変換できます。
iconv コマンドを実行した後、次のように出力ファイルの内容と文字の新しいエンコーディングを確認します。
file -i input.file
cat input.file
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file
file -i out.file
注: 文字列 //IGNORE
が to-encoding に追加された場合、文字は変換できず、エラーが表示されます。変換後。
繰り返しますが、上記の例 (ASCII//TRANSLIT) のように文字列 //TRANSLIT
が to-encoding に追加されると仮定すると、変換される文字は必要に応じて音訳され、可能であれば変換されます。 。これは、ターゲットの文字セットで文字を表現できない場合、1 つ以上の似た文字を使用して近似できることを意味します。
したがって、音訳できず、ターゲットの文字セットにない文字は、出力内で疑問符 (?)
に置き換えられます。
複数のファイルを UTF-8 エンコーディングに変換する
本題に戻りますが、ディレクトリ内の複数またはすべてのファイルを UTF-8 エンコーディングに変換するには、次のように encoding.sh という小さなシェル スクリプトを作成します。
#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING"
#loop to convert multiple files
for file in *.txt; do
$CONVERT "$file" -o "${file%.txt}.utf8.converted"
done
exit 0
ファイルを保存し、スクリプトを実行可能にします。ファイル (*.txt
) が存在するディレクトリから実行します。
chmod +x encoding.sh
./encoding.sh
重要: このスクリプトは、複数のファイルをあるエンコーディングから別のエンコーディングに一般的に変換するためにも使用できます。FROM_ENCODING
の値を試してみるだけです。 と TO_ENCODING
変数。出力ファイル名 "$ {file%.txt}.utf8.converted"
を忘れないでください。
詳細については、iconv のマニュアル ページを参照してください。
man iconv
このガイドを要約すると、エンコーディングと、ある文字エンコーディング スキームから別の文字エンコーディング スキームに変換する方法を理解することは、すべてのコンピュータ ユーザーにとって必要な知識であり、テキストを扱うプログラマにとってはなおさらです。
最後に、ご質問やフィードバックがございましたら、以下のコメント セクションを使用してご連絡ください。