2011-02-03 124 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字符的顯示正常工作。 執行「回聲Hallo!」之類的東西!工作正常。

但是執行「cmd.exe/c test.bat」會停止工作,並顯示錯誤消息。

這不僅是一個顯示錯誤:批處理文件沒有得到執行。

切換回任何「舊」字符集可以讓它再次正常工作。 切換到UTF8字符集可讓其再次停止工作。

當然,放棄UTF8是一種解決方案 - 但在背景中有不良副作用。

+0

在這種情況下`chcp 65001`做了什麼不同嗎? `調用test.bat`會有什麼不同嗎? – Joey 2011-02-03 13:27:46

回答

4

我不知道如何在代碼頁更改爲65001後啓動批處理文件。
即使將批處理文件保存爲utf16-le或utf16,也不會啓動。

但是,您可以運行批處理文件並更改其中的代碼頁,但是重要的是將其餘代碼緩存在塊(括號或&符線)中。

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

chcp 65001 & type myFile & chcp 850 
echo This also works