Windows 명령 프롬프트의 인코딩과 배치 파일 사이에 차이가있는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/252970

문제

예를 들어, 반기 파일이 있다고 가정합니다. 'test.cmd' 그리고 그것은 단순히 다음을 포함합니다.

echo %1

명령 프롬프트에서 직접 전화 할 수 있습니다. 'test.cmd some¬arg' 그리고 결과는 그 문자열입니다 'some¬arg' 인쇄됩니다.

그러나 동일한 호출을 두 번째 배치 파일로 배치하면 'tester.cmd' 인수를 위해, 나는 명령 프롬프트에서 이것을 호출하기 위해 결과는 문자열이 'some%arg' 인쇄됩니다.

인코딩을 엉망으로 만드는 것은 무엇이며 어떻게 돌아 다니나요? 나는 전에 이것을 해결했다고 확신하지만 어떻게 기억할 수 없다 ...

감사!

도움이 되었습니까?

해결책

배치 파일이 CMD.exe와 다른 코드 페이지로 인코딩되어 있기 때문입니다.

서부 기본 구성에서 CMD.exe가 시작됩니다 CP850, 그러나 텍스트 편집기는 일반적으로 작동합니다 CP1252 (종종 라틴어 -1 또는 ISO-8859-1이라고 잘못 언급 된 것은).

"¬"및 "¼"문자는이 두 코드 페이지 "BC"에서 동일한 문자 코드를 공유합니다.

솔루션은 간단합니다. 코드 850 페이지에서 배치 파일을 인코딩하거나 CMD.exe를 발행하여 코드로 전환합니다. chcp 1252.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top