バッチ ファイルの作成に使用するプログラムがあります。私の問題は、プログラムの出力が UTF-8 であるため、é、à、ö、Ä などの分音記号がバッチ ファイルに含まれるとすぐに失敗することです。バッチ ファイルを作成するプログラムで、出力を UTF-8 以外に変換する方法がわかりません。
そこで、2 つの bach ファイルを作成することを考えていました。実際のものと、実際のものを UTF-8 から ANSI (Windows コードページ 1252、またはおそらく cp 850) に変換し、その後それを実行するもの。もちろん、実際のバッチ ファイルの最初のコマンドとして chcp xxxx を追加します。
したがって、私の質問は、Windows で iconv に代わるものがあるか、または 2 番目のバッチ ファイルを使用して UTF-8 テキスト ファイルを Windows コードページに変換する方法です。Win XP 以降に組み込まれているもので、使用できるものはありますか? または、これに使用できる無料の再配布可能なツールはありますか?
ノート:
chcp 65001
バッチファイルでは機能しません。
編集1:
Windows XP では、最初の回答をテストするために 2 つのバッチ ファイルを作成しました。
BOM なしで UTF-8 にエンコードされた 1.bat には次が含まれます。
chcp 1252
cd üöä
2.bat も BOM なしで UTF-8 にエンコードされていますが、特殊文字は含まれていません。
chcp 1252
type "1.bat" >"ansi_file.bat"
2.bat を実行したときに作成される ansi_file.bat は、ansi エンコードではなく utf-8 でエンコードされたままになります。
編集2:
前述の逆のプロセスが機能します。
chcp 1252
echo ü > ansi.txt
cmd /u /c type ansi.txt > unicode.txt
ただし、次の後続の行のいずれも
cmd /a /c type unicode.txt > back2ansi.txt
type unicode.txt > back2ansi_v2.txt
ANSI に戻ります。これを Win XP と Win 7 の両方で試しました。
ノート:
Windows Script Host と VBS の使用方法を認識しています。ただし、スクリプト ホストに依存することは避けたいと思います。VBS メソッドの詳細については、http: //msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspxを参照してください。
編集3:
上記のユニコード ü を含む作成されたテキスト ファイルは utf-8 ではありません
Windows ユニコード ファイルは HEX です。
FC 00 20 00 0D 00 0A 00
BOM のない UTF-8 は HEX になります。
C3 BC 20 0D 0A
リンクされている VBS ソリューションは、Unicode 形式でのみ機能しますが、UTF-8 形式では失敗します。UTF-8 を別のコード ページに変換する必要があるため、そのコード ページでも機能しているようには見えません...