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 の間 ユニコードのようなものです 、ASCII 、utf8 、および 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