배치 파일 시작시 이상한 문자 (´╗┐) [중복]


30

메모장과 메모장 ++을 모두 사용하여 Windows에서 배치 파일로 작업하고 있습니다. 모두로 시작하는 배치 파일을 실행하면 @echo off첫 번째 줄 (두 개의 개별 컴퓨터에서 실행할 때) reading ´╗┐@echo off이 표시되고 그 아래의 모든 REM 줄도 나타납니다.

메모장 ++에서 인코딩을 변경하려고 시도했지만 이미 UTF-8 인코딩에 있다고 주장합니다.

이러한 파일이 제대로 실행 되려면 어떻게해야합니까?


@luu 내 질문은 메모장 + +에 관한 것입니다
— Canadian Luke REINSTATE MONICA

UTF8로 저장할 때 일반 메모장은 BOM없이 저장할 수 없으며 해당 문자를 추가합니다.
— dmcontador

답변:


26

UTF-8에 대한 바이트 순서 표시의 DOS ASCII 인코딩처럼 보입니다 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

메모장 ++에서 "BOM없는 UTF-8"또는 일반 ASCII로 인코딩하십시오. UTF-8에 BOM을 사용하는 것은 바람직하지 않기 때문에 ASCII와 정확히 호환되지 않습니다.


2
파이썬에서 실험 한 것처럼 'DOS ASCII'를 제외한 DOS 코드 페이지 850은 다음과 같습니다.>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
— deltab

@deltab 아, 잘 찾았습니다. ╗┐MS-DOS 5 / Windows 3.11 이후로 라인 아트 문자를 보지 못했다는 것만으로 인코딩이 특별히 무엇인지 확실하지 않았습니다 . 최신 Windows는 호환성을 위해 해당 인코딩으로 배치 파일을 실행해야합니까?
— baochan

1
Visual Studio를 사용하여 새 텍스트 파일을 만들 때이 문제가 발생했습니다.
— Sam Goldberg

9

제대로 작동하려면 ANSI 인코딩 으로 설정해야합니다 . 이를 설정하기 위해 Encoding- > Encode in ANSI를 선택했습니다 .

이것을 파악하기 위해 명령 줄에서 배치 파일을 만들려고했습니다.

echo @echo off > batch.bat
echo REM Some comment... >> batch.bat
echo echo Hello world! >> batch.bat

그런 다음 메모장 ++ 에서이 파일을 열고 오른쪽 아래 모서리에서 인코딩을 확인했습니다.이 인코딩은 ANSI로 UTF-8 입니다. 왜 마지막 비트를 추가하는지 모르겠지만 지금 작동하는 것 같습니다.


ANSI는 실제로 인코딩이 아닙니다. 아마 그것은 당신의 Windows 시스템의 기본 코드 페이지를 참조 합니다. 구성에 따라 시스템마다 다릅니다.
— 코디 그레이

이것은 정확하지 않습니다. BOM은 문자 세트 인코딩 아티팩트입니다.
— Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen 누가 틀렸나 요, 아니면 코디?
— Canadian Luke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.