
ASCIIテキスト形式をUTF-8に変換する必要があります。
以下は、コマンドを介して実行する操作ですiconv
。
[root@main tmp]#猫ファイル1 1 5 6 [root@main tmp]# ファイル File1 ファイル1:ASCIIテキスト [root@main tmp]# iconv -f ascii -t utf-8 ファイル 1 > ファイル 2 [root@main tmp]# ファイルFile2 ファイル2:ASCIIテキスト
(まだASCII、utf-8ではありません)
これをasciiからutf-8に変換する方法についての提案はありますか?
答え1
これには2つのことが関係しています。
file
Solarisの株式ユーティリティは不都合です。- 7ビットASCII文字は、バイト互換の方法でUTF-8に含まれています。これは、入力ファイルに7ビットのASCII文字しか含まれていないと、実際の変換が発生しないことを意味します。良い
file
ユーティリティでもASCIIを表示します。
したがって、ファイルを「拡張」8バイトASCIIエンコーディングに変換できます。例えばラテン語1。次に、iconvを使用してそれを指定する必要があります。たとえば、次のようになります。
$ iconv -f latin1 -t utf8 file1 > file2
これにより、次のように出力を比較できます。
$ cmp file1 file2
$ hexdump ...
$ $EDITOR file2
vimなどのエディタは、特定の文字のバイト値を表示し、使用されるエンコーディングを動的に変更するなどのコマンドを提供します。
答え2
file
ASCIIファイルがUTF-8(すでにUTF-8)であることを宣言したい場合は、UTF-8を前に追加するこのコマンドを実行できます。BOM(バイト順表示)それに:
(printf "\357\273\277";cat File1) > File2
編集:しかし、いくつかの質問があります。
これはLinuxディストリビューションが通常提供するルックアップバージョンで動作しますが、Solarisは
file
ファイルをUTF-8として検出せずに「data」のみを検出します。BOMは、テキストファイルを処理するために使用されるツールを混同する可能性があります。