Linuxでのファイル文字符号化フォーマットの検出と変換
4191 ワード
現在、多くの場合、私たちが遭遇した非英語文字ファイルはUTF-8符号化を使用しており、この場合、一般的にこれらのファイルの内容を表示しても問題はありません.しかし、中国語のGBK符号化やロシア語のCP 1251符号化など、UTF-8符号化されていないファイルに遭遇することがある.テキストファイルは一般的に自己符号化フォーマットの情報を持たないので、処理に多くの面倒をもたらす.本文はいくつかのLinuxコマンドを紹介してテキストファイルの符号化フォーマットを検出して変換する.
encaコマンド名はExtremely Naive Charset Analyserの略で、この萌えの名前から見ると、ファイルの符号化フォーマットを検出するために使用できるはずです.
Ubuntuでは、以下のコマンドでインストールできます.
最も簡単な使用方法は次のとおりです.
上の
encaのエラープロンプトに従って、検出するファイル言語を限定するために
まず、現在のシステムでencaがサポートしている言語と対応する符号化タイプを見る必要があります.
私のテスト環境では、encaは以上の言語とコードをサポートしています.中国語は
この時、encaは明確な答えを出した.
デフォルトでは、encaは、上記の
ファイルの正しい符号化フォーマットを知ると、ファイルをUTF 8のような一般的な符号化フォーマットまたはシステムのデフォルトでサポートされている符号化フォーマットに変換して、後続の処理を行うことが望ましいことが多い.
encaコマンドに
iconvは*nixシステムの変換文字符号化の標準コマンドとAPIである.1つのGBK符号化されたファイルをUTF 8符号化に変換する場合は、iconvコマンドを使用します.
ここで、
変換されたコンテンツをファイルに保存する場合は、
このコマンドは変換された内容をtest_に自動的に保存します.converted.txtファイル
enconv(1) - Linux man page wiki - iconv libiconv
ファイルエンコーディングフォーマットの検出
encaコマンド名はExtremely Naive Charset Analyserの略で、この萌えの名前から見ると、ファイルの符号化フォーマットを検出するために使用できるはずです.
encaのインストール
Ubuntuでは、以下のコマンドでインストールできます.
apt-get install enca
使用方法
最も簡単な使用方法は次のとおりです.
# enca test.txt
Simplified Chinese National Standard; GB2312
上の
test.txt
は中国語GB 2312コードを含むテキストファイルである.encaのドキュメントによると、運が良ければ、上記のように追加パラメータを追加することなく、ファイルの符号化フォーマットを検出することができる.私の経験から見ると、Linuxの言語設定は運に影響を与える要素です.上記の動作は、デフォルト言語が中国語であるLinuxでは、上記の結果と同様にファイルの中国語符号化フォーマットが正しく検出される.LInuxが英語にデフォルト設定されている場合、運はそれほどよくありません.# enca test.txt
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.
encaのエラープロンプトに従って、検出するファイル言語を限定するために
-L
のパラメータを提供する必要がある.まず、現在のシステムでencaがサポートしている言語と対応する符号化タイプを見る必要があります.
# enca --list languages
belarusian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U
bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
croatian: CP1250 ISO-8859-2 IBM852 macce CORK
hungarian: ISO-8859-2 CP1250 IBM852 macce CORK
lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
slovene: ISO-8859-2 CP1250 IBM852 macce CORK
ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
chinese: GBK BIG5 HZ
none:
私のテスト環境では、encaは以上の言語とコードをサポートしています.中国語は
chinese: GBK BIG5 HZ
であることがわかります.そこで、以下のパラメータの組み合わせを試してみましょう.# enca -L chinese test.txt
Simplified Chinese National Standard; GB2312
この時、encaは明確な答えを出した.
デフォルトでは、encaは、上記の
Simplified Chinese National Standard; GB2312
のような、読み取り可能な符号化フォーマット名を与える.場合によっては、iconvコマンドと組み合わせてファイル符号化を変換したいなど、他のコマンドやプログラムに結果を与えることを望んでいます.-i
を追加して、encaに対応するプログラムの使用可能な符号化名を与えることができます.# enca -i -L chinese test.txt
GBK
ファイルエンコーディングフォーマットの変換
ファイルの正しい符号化フォーマットを知ると、ファイルをUTF 8のような一般的な符号化フォーマットまたはシステムのデフォルトでサポートされている符号化フォーマットに変換して、後続の処理を行うことが望ましいことが多い.
encaを使用して変換
encaコマンドに
-x
パラメータを追加すると、encaコマンドはファイルを-x
パラメータで指定された符号化フォーマットに変換します.# enca -L chinese test.txt
Simplified Chinese National Standard; GB2312
# enca -x UTF8 -L chinese test.txt
# enca -L chinese test.txt
Universal transformation format 8 bits; UTF-8
enca -x UTF8 -L chinese test.txt
のコマンドを実行すると、ファイルtestが表示される.txtの符号化はGB 2312からUTF 8に変換する.注encaコマンドはソースファイルを上書きするので、このコマンドを使用する場合は、ソースファイルのバックアップに注意してください.iconvを使用して変換
iconvは*nixシステムの変換文字符号化の標準コマンドとAPIである.1つのGBK符号化されたファイルをUTF 8符号化に変換する場合は、iconvコマンドを使用します.
# iconv -f GBK -t UTF8 test.txt
ここで、
test.txt
は変換対象のファイルである、-f GBK
のパラメータはソースファイルの符号化がGBKである、-t UTF8
は変換対象の符号化を示す.以上のコマンドを実行すると、iconvコマンドは変換後のファイル内容を標準出力に印刷する.変換されたコンテンツをファイルに保存する場合は、
-o
パラメータを追加します. # iconv -f GBK -t UTF8 -o test_converted.txt test.txt
このコマンドは変換された内容をtest_に自動的に保存します.converted.txtファイル
iconv -l
により、すべての文字セット名を表示することができる.前述enca -i
は、iconvで利用可能なファイル符号化名を出力するためにも用いることができる.