GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでファイルをUTF-8エンコーディングに変換する方法

このガイドでは、どの文字エンコードについて説明し、コマンドラインツールを使用してファイルをある文字エンコードから別の文字エンコードに変換するいくつかの例について説明します。最後に、任意の文字セット(文字セット)から複数のファイルを変換する方法を見ていきます。 )から UTF-8 Linuxでのエンコーディング。

すでにお気づきかもしれませんが、コンピュータは文字や数字など、私たち人間がビット以外に認識できるものを理解したり保存したりすることはありません。ビットには、0の2つの可能な値しかありません。 または1true またはfalseyes またはno 。コンピュータが処理するには、文字、数字、画像など、他のすべてのものをビットで表す必要があります。

簡単に言うと、文字エンコード は、生の0と1を実際の文字に解釈する方法をコンピューターに通知する方法です。ここで、文字は一連の数字で表されます。ファイルにテキストを入力すると、作成する単語や文がさまざまな文字から作成され、文字が文字セットに編成されます。 。

ASCII など、さまざまなエンコード方式があります。 、 ANSI Unicode とりわけ。以下はASCIIの例です エンコーディング。

文字ビットA01000001B01000010 

Linuxでは、 iconv コマンドラインツールは、テキストをある形式のエンコーディングから別の形式に変換するために使用されます。

ファイルを使用してファイルのエンコードを確認できます コマンド、-iを使用 または--mime 以下の例のように、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 <​​/ pre>   

ファイルを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に追加され、変換できない文字と変換後にエラーが表示されます。

ここでも、文字列//TRANSLITを想定しています。 上記の例のようにto-encodingに追加されます( ASCII // TRANSLIT )、変換される文字は、必要に応じて、可能であれば文字変換されます。これは、文字がターゲット文字セットで表現できない場合に、1つ以上の類似した外観の文字で近似できることを意味します。

したがって、音訳できず、ターゲット文字セットに含まれていない文字は、疑問符(?)に置き換えられます。 出力で。

複数のファイルをUTF-8エンコーディングに変換

メイントピックに戻ると、ディレクトリ内の複数またはすべてのファイルをUTF-8エンコーディングに変換するには、 encoding.shという小さなシェルスクリプトを記述できます。 次のように:

#!/ bin / bash#enter input encoding hereFROM_ENCODING ="value_here" #output encoding(UTF-8)TO_ENCODING ="UTF-8"#convertCONVERT ="iconv -f $ FROM_ENCODING -t $ TO_ENCODING" #loop to複数のファイルを*.txtのファイルに変換します。 $ CONVERT "$ file" -o "$ {file%.txt} .utf8.converted" doneexit 0
を実行します

ファイルを保存してから、スクリプトを実行可能にします。ファイルがあるディレクトリ(*.txt)から実行します )があります。

 $ chmod + x encoding.sh $ ./encoding.sh 

重要 :このスクリプトを使用して、特定のエンコーディングから別のエンコーディングに複数のファイルを一般的に変換することもできます。FROM_ENCODINGの値を試してみてください。 およびTO_ENCODING 変数、出力ファイル名を忘れないでください"${file%.txt}.utf8.converted"

詳細については、 iconvをご覧ください。 マニュアルページ。

 $ man iconv 

このガイドを要約すると、エンコーディングと、ある文字エンコーディングスキームから別の文字エンコーディングスキームに変換する方法を理解することは、すべてのコンピュータユーザーにとって、テキストの処理に関してプログラマーにとってより必要な知識です。

最後に、質問やフィードバックについては、以下のコメントセクションを使用してご連絡ください。


Linux
  1. LinuxファイルでACLを表示または変更する方法

  2. Linuxでファイルの名前を変更するにはどうすればよいですか?

  3. LinuxでNetcatを使用してファイルを転送する方法

  1. Linuxでファイルを移動する方法

  2. Linuxでファイルを見つける方法

  3. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  1. Linuxで隠しファイルを表示する方法

  2. Linuxでファイルとディレクトリをコピーする方法

  3. Linuxでファイルを作成する方法