ディレクトリ内のファイルのエンコーディング(ANSI → UTF-8など)をコマンドやツールで一括変換するにはどうすればいいですか?
単一ファイルの場合はエディタが役立ちますが、大量ファイルのジョブを行うにはどうすればいいですか?
49 desolat 2009-08-21
Cygwin や GnuWin32 は iconv
や dos2unix
(および unix2dos
) のような Unix ツールを提供しています。Unix/Linux/Cygwinでは、ANSIの代わりに “windows-1252 “をエンコードに使いたいでしょう(下記参照)。(システムがデフォルトのコードページとして 1252 以外のコードページを使用している場合は別ですが、その場合は iconv に翻訳元のコードページを指定する必要があります)
で一方の(-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 {} \> {} \;
Alternatively:
## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;
この質問はこのサイトでも何度も質問されているので、ここでは「ANSI」について補足しておきます。関連する質問への回答の中で、CesarBが言及しています
Windowsでは「ANSI」と呼ばれるエンコーディングがいくつかあります。実際には、ANSI は誤記です
ANSI エンコーディングは、Windows API の “A” 関数で使用されるエンコーディングです ( “W” 関数は UTF-16 を使用します)。どのエンコーディングに対応するかは、通常、お使いのWindowsシステム言語に依存します。最も一般的なのは CP 1252 (Windows-1252 としても知られています) です。つまり、エディタがANSIと言った場合、それは「API関数がデフォルトのANSIエンコーディングとして使用しているものは何でも」という意味になります
彼がリンクしているページでは、CP 1252とISO-8859-1の起源に関する歴史的な豆知識(a Microsoft PDFから引用)を提供しています
これは、Windows コード ページ 1252 がもともと ANSI ドラフトに基づいていたという事実に由来しています。しかし、ISO 規格の制御コード用に予約されている範囲にコードポイントを追加することで、Windows コードページ 1252 とそれに続く Windows コードページは、もともと ISO 8859-x シリーズに基づいて ISO から逸脱していました。今日に至るまで、マイクロソフトの内外を問わず、開発コミュニティが 8859-1 コードページを Windows 1252 と混同したり、Windows コードページのサポートを示すために “ANSI” または “A” が使用されているのを見たりすることは珍しくありません
38 quack quixote 2009-09-30
PowerShellで、こんなことができます
Get-Content IN.txt | Out-File -encoding ENC -filepath OUT.txt
ENC は unicode, 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
}
29 akira 2010-02-26
改行に関するウィキペディアのページには、変換ユーティリティのセクションがあります
これは、Windowsが出荷しているツールのみを使用して変換するための最善の策のように思われます
TYPE unix_file | FIND "" /V > dos_file
5 None 2009-08-21
UTFCastはバッチモードに対応したWindows用のUnicodeコンバータです。私は有料版を使っていますが、かなり快適に使えています
UTFCastは、バッチであなたのマウスをクリックするだけでUTFエンコーディングにすべてのテキストファイルを変換することができますUnicodeコンバータです。元のファイルのディレクトリ構造を維持しながら、UTF-8、UTF-16およびUTF-32を含むUTFエンコーディングにテキストファイルの完全なディレクトリを変換するためにそれを使用することができます。それはあなたのテキストファイルが別の拡張子を持っている場合でも問題ではありません、UTFCastは自動的にテキストファイルを検出し、それらを変換することができます
3 Tiler 2011-12-06
自動検出機能を備えたファインダを使用したオネライナー
マッチするすべてのテキストファイルの文字エンコーディングが自動的に検出され、マッチするすべてのテキストファイルがUTF-8エンコーディングに変換されます
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
これらのステップを実行するために、サブシェルsh
を-exec
で使用し、-c
フラグでワンライナーを実行し、-- {}
で位置引数"$1"
にファイル名を渡します。その間、UTF-8出力ファイルは一時的にconverted
という名前になります
このようなファイル管理の自動化には、find
コマンドが非常に便利です
3 Serge Stroobandt 2016-08-28
このPythonスクリプトを使います。https://github.com/goerz/convert_encoding.py どのプラットフォームでも動作します。Python 2.7が必要です
1 kinORnirvana 2018-07-01
iconv -f original_charset -t utf-8 originalfile > newfile
上記のコマンドをfor
ループで実行します
1 Aneesh Garg 2014-06-06
私のユースケースでは、入力エンコーディングの自動検出が必要で、Windows-1250エンコーディングのファイルがたくさんあり、file -bi <FILE>
コマンドはcharset=unknown-8bit
を返します。これは iconv
のパラメータとしては有効ではありません
私はencaで最高の結果を得ました
拡張子がtxtのすべてのファイルをUTF-8に変換します
find . -type f -iname *.txt -exec sh -c 'echo "$1" && enca "$1" -x utf-8' -- {} \;
1 Bedla 2018-09-16
ConvertZもバッチ変換のためのWindows GUIツールです
- big5, gbk, hz, shift-jis, jis, euc-jp, unicode big-endian, unicode little-endian, and utf-8:次のエンコーディングの間でファイル(プレーンテキスト)またはクリップボードの内容を変換します
- バッチファイルの変換
- 実際に変換する前に、ファイルの内容と変換結果をプレビューします
- htmlドキュメントで指定されている場合、
<Meta>
タグの文字セットを自動更新する- 変換後のBig5/GBK文字の誤マップを自動修正
- ファイル名のエンコーディングを big5, gbk, shift-jis, unicode のいずれかに変更する
- big5, gbk, shift-jis, unicode, utf-8エンコーディングの中からMP3のID3やAPEを変換します
- Oggタグをutf-8で繁体字中国語と簡体字中国語の間で変換します
代替ダウンロードリンク。https://www.softking.com.tw/download/1763/
0 phuclv 2020-08-19
Unix には dos2unix
があります。Windows にも同様のツールがありました (別のリファレンスはこちら)
Unix と Windows の間でテキストファイルを変換するには?
0 nik 2009-08-21
CP Converter という名前のフリーでオープンソースのバッチエンコーディングコンバータがあります
0 MSS 2020-03-28