2011-02-03 2 views
3

"mode con cp select = 65001"을 사용하여 utf8 코드 페이지로 전환 한 후 일괄 처리 이음새가 오류 메시지없이 작동하지 않습니다.Windows XP - cmd.exe - utf8 코드 페이지로 전환 한 후 배치 파일을 실행할 수 없습니다.

따라서 "cmd.exe/c test.bat"를 코드 페이지 437 또는 850이 활성화 된 상태로 새로 시작한 콘솔에서 실행하면 문제가 없습니다. "mode con cp select = 65001"을 실행하면 문제가 없습니다. UTF-8 문자 표시가 정상적으로 작동합니다. "echo Hallo!"와 같은 것을 실행 중입니다. 잘 작동합니다.

"cmd.exe/c test.bat"를 실행하면 오류 메시지가 표시되지 않고 작업이 중지됩니다.

표시 오류 일뿐만 아니라 배치 파일이 실행되지 않습니다.

"이전"문자 세트로 다시 전환하면 다시 정상적으로 작동합니다. UTF8 문자 집합으로 전환하면 작업이 다시 중지됩니다.

물론 UTF8을 근절하는 것은 해결책이지만 배경에는 부작용이 있습니다.

+0

이 경우 'chcp 65001'이 다른가요? 'call test.bat'는 다른 무엇인가합니까? – Joey

답변

4

난 당신이 UTF16 르에 배치 파일을 저장하거나이 시작되지 않습니다 UTF16은-할 경우에도 코드 페이지 65001.
로 변경 한 후 배치 파일을 시작할 수 있습니다 방법을 모르겠어요.

그러나 배치 파일을 실행하고 코드 페이지를
내부에서 변경할 수 있지만 나머지 코드는 블록 (괄호 또는 앰퍼샌드 라인)에 캐시하는 것이 중요합니다.

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

chcp 65001 & type myFile & chcp 850 
echo This also works 
관련 문제