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

ファイルのエンコーディングを一括変換

Cygwin または GnuWin32 は iconv のような Unix ツールを提供します と dos2unix (そして unix2dos )。 Unix/Linux/Cygwin では、ANSI の代わりに "windows-1252" をエンコーディングとして使用する必要があります (以下を参照)。 (システムがデフォルトのコードページとして 1252 以外のコードページを使用していることがわかっている場合を除きます。その場合は、iconv を指定する必要があります。 変換元の正しいコードページ)

1 から変換 (-f ) 他の (-t ) と:

$ iconv -f windows-1252 -t utf-8 infile > outfile

または、すべてを見つけて征服する形式で:

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;

または:

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;

この質問は、このサイトで何度も尋ねられているので、「ANSI」に関する追加情報をここに示します。関連する質問への回答で、CesarB は次のように述べています。

<ブロック引用>

Windows では "ANSI" と呼ばれるエンコーディングがいくつかあります。実際、ANSI は誤称です。 iconv には、どちらが必要かを推測する方法がありません。

ANSI エンコーディングは、Windows API の "A" 関数で使用されるエンコーディングです ("W" 関数は UTF-16 を使用します)。通常、どのエンコーディングに対応するかは、Windows システム言語によって異なります。最も一般的なのは CP 1252 (Windows-1252 とも呼ばれます) です。そのため、エディタで ANSI と表示されている場合、それは「API 関数がデフォルトの ANSI エンコーディングとして使用するものは何でも」を意味します。これは、システムで使用されるデフォルトの非 Unicode エンコーディングです (したがって、通常はテキスト ファイルに使用されるエンコーディングです)。

彼がリンクしているページでは、CP 1252 と ISO-8859-1 の起源に関するこの歴史的なヒント (Microsoft PDF から引用) を提供しています。これは、よく使用されるもう 1 つのエンコーディングです。

<ブロック引用>

[...] これは、Windows のコード ページ 1252 がもと​​もと ISO 標準 8859-1 となった ANSI ドラフトに基づいていたという事実に由来します。ただし、ISO 規格で制御コード用に予約されている範囲にコード ポイントを追加する際に、ISO 8859-x シリーズに基づく Windows コード ページ 1252 以降の Windows コード ページは、ISO から逸脱しました。今日に至るまで、Microsoft 内外の開発コミュニティが 8859-1 コード ページを Windows 1252 と混同し、Windows コード ページ サポートを示すために "ANSI" または "A" が使用されることは珍しくありません。 .


PowerShell を使用すると、次のようなことができます:

Get-Content IN.txt | Out-File -encoding ENC -filepath OUT.txt

ENC の間 ユニコードのようなものです 、ASCIIutf8 、および utf32 . 「help out-file」をチェックしてください。

ディレクトリ内のすべての *.txt ファイルを UTF-8 に変換するには、次のようにします:

foreach($i in ls -name DIR/*.txt) { \
    Get-Content DIR/$i | \
    Out-File -encoding utf8 -filepath DIR2/$i \
}

これにより、DIR2 に各 .txt ファイルの変換バージョンが作成されます。

すべてのサブディレクトリ内のファイルを置き換えるには、次を使用します:

foreach($i in ls -recurse -filter "*.java") {
    $temp = Get-Content $i.fullname
    Out-File -filepath $i.fullname -inputobject $temp -encoding utf8 -force
}

改行に関するウィキペディアのページには、変換ユーティリティに関するセクションがあります。

これは、Windows に同梱されているツールのみを使用して変換するための最善の策と思われます:

TYPE unix_file | FIND "" /V > dos_file

Linux
  1. PDF ファイルのバッチ サイズ変更と圧縮

  2. 既存の Windows マシンを VirtualBox に変換する方法は?

  3. 構成ファイルは WSL のどこにありますか?

  1. Zipファイルのエンコード?

  2. ファイルの名前を順番に変更しますか?

  3. Windows7でUbuntu11.04ファイルにアクセスする方法は??

  1. Windows で Linux の隠しファイルを非表示にする

  2. Linux で大量の BMP ファイルを JPEG に変換する

  3. Unix の行末を Windows に変換する