3

「mode con cp select=65001」で utf8 コードページに切り替えた後、バッチ処理の継ぎ目がエラー メッセージなしで動作を停止します。

したがって、コードページ 437 または 850 がアクティブな状態で新しく起動したコンソールで "cmd.exe /c test.bat" を実行すると、正常に動作します。「mode con cp select=65001」を実行すると正常に動作します。UTF-8 文字の表示は正常に機能します。「echo Hallo!」のようなものを実行します。正常に動作します。

ただし、「cmd.exe /c test.bat」を実行すると、エラー メッセージが表示されずに動作が停止します。

表示エラーだけではありません。バッチ ファイルが実行されません。

「古い」文字セットに戻すと、再び正常に機能します。UTF8 文字セットに切り替えると、再び機能しなくなります。

もちろん、UTF8 IS を控えることは解決策ですが、バックグラウンドには悪い副作用があります。

4

1 に答える 1

4

コードページが 65001 に変更された後、バッチ ファイルを起動する方法がわかりません。
バッチ ファイルを utf16-le または utf16-be で保存しても起動しません。

ただし、バッチ ファイルを実行して内部のコードページを変更することはできますが
、残りのコードをブロック (括弧またはアンパサンド行) にキャッシュすることが重要です。

@echo off
(
chcp 65001
rem Do my UTF work
chcp 850
)
echo This works

chcp 65001 & type myFile & chcp 850
echo This also works
于 2011-02-03T18:26:42.660 に答える