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

高洛峰
リリース: 2016-11-16 09:13:07
オリジナル
1791 人が閲覧しました

このチュートリアルでは、文字エンコーディングの意味を説明し、コマンド ライン ツールを使用して、ある文字エンコーディングを使用するファイルを別のエンコーディングに変換する例をいくつか示します。最後に、Linux でさまざまな文字エンコーディングを使用しているファイルを UTF-8 エンコーディングに変換する方法を見ていきます。

バイナリデータを除いて、コンピューターは文字、数字、その他人間が理解できるものを理解して保存できないことはすでにご存知かもしれません。バイナリ ビットには、0 または 1、true または false、yes または no の 2 つの値しかありません。文字、データ、画像など、その他すべてのものは、コンピューター処理のためにバイナリ形式で表現される必要があります。

簡単に言えば、文字エンコーディングは、生の 0 と 1 を実際の文字に解釈するようにコンピューターに指示する方法です。これらの文字エンコーディングでは、文字は数値の文字列として表されます。

ASCII、ANCI、Unicode など、多くの文字エンコーディング スキームがあります。以下は ASCII エンコーディングの例です。

字符            二进制 
A               01000001 
B               01000010
ログイン後にコピー

Linux では、コマンド ライン ツール iconv を使用して、あるエンコーディングを使用しているテキストを別のエンコーディングに変換します。

file コマンドを使用し、-i または --mime パラメーターを追加すると、ファイルの文字エンコーディングを表示できます。このパラメーターを使用すると、プログラムは次の例のような文字列の mime (多目的インターネット メール拡張子) データを出力できます。 :

$ file -i Car.java 
$ file -i CarDriver.java
ログイン後にコピー

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

Linux でファイルのエンコーディングを表示する

iconv ツールは次のように使用されます:

$ iconv option 
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
ログイン後にコピー

ここで、-f または --from-code は入力エンコーディングを示し、-t または --to-エンコーディングは出力エンコーディングを指定します。

既存のエンコードされた文字セットをすべてリストするには、次のコマンドを使用できます:

$ iconv -l
ログイン後にコピー

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

既存のエンコードされた文字セットをすべてリストする

ファイルを ISO-8859-1 エンコードから UTF-8 エンコードに変換します

以下、あるエンコーディング スキームを別のエンコーディング スキームに変換する方法を学びます。次のコマンドは、ISO-8859-1 エンコードを UTF-8 エンコードに変換します。

次の文字が含まれている次のファイル input.file について考えてみましょう:

� � � �
ログイン後にコピー

まず、このファイルのエンコーディングを調べてから、ファイルの内容を調べます。最後に、すべての文字を UTF-8 エンコーディングに変換できます。

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
ログイン後にコピー

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

Linux で ISO-8859-1 を UTF-8 に変換します

注: //IGNORE 文字列が出力エンコーディングの後に追加される場合、変換できない文字は変換されず、変換後にプログラムはエラー メッセージを表示します。

上記の例の出力エンコーディング (UTF-8//TRANSLIT) の後に文字列 //TRANSLIT が追加された場合、変換される文字は形式変換原則を使用しようとします。つまり、出力エンコード スキームで文字を表現できない場合、その文字は類似した形状の文字に置き換えられます。

また、文字が出力エンコーディングに含まれておらず解読できない場合、出力ファイルでは疑問符に置き換えられます。

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

トピックに戻ります。複数のファイル、または特定のディレクトリ内のすべてのファイルを UTF-8 エンコーディングに変換したい場合は、次のような単純なシェル スクリプトを作成し、encoding.sh という名前を付けます。

#!/bin/bash 
### 将 values_here 替换为输入编码 
FROM_ENCODING="value_here" 
### 输出编码 (UTF-8) 
TO_ENCODING="UTF-8" 
### 转换命令 
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING" 
### 使用循环转换多个文件 
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
ログイン後にコピー

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



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!