2011-02-03 10 views
3

"mode con cp select = 65001"を使用してutf8コードページに切り替えた後、エラーメッセージなしでバッチ処理のシームが機能しなくなります。Windows XP - cmd.exe - utf8コードページに切り替えた後にバッチファイルを実行できません

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

しかし、 "cmd.exe/c test.bat"を実行すると、エラーメッセージは表示されずに作業が停止します。

表示エラーだけでなく、バ​​ッチファイルが実行されません。

「古い」文字セットに戻すと、再び正常に動作します。 UTF8文字セットに切り替えると、再度作業を停止できます。

もちろん、UTF8を控えることは解決策ですが、バックグラウンドに悪影響を及ぼします。

+0

この場合、 'chcp 65001'は何か異なりますか? 'call test.bat'は何か違うことをしますか? – Joey

答えて

4

コードページが65001に変更された後、どのようにバッチファイルを開始できるのかわかりません。
バッチファイルをutf16-leまたはutf16-inに保存しても、起動しません。

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

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

chcp 65001 & type myFile & chcp 850 
echo This also works 
関連する問題