ID:
PW:

     0 분
     10 분

프로그래밍 Tips
프로그래밍에 관한 Tip을 공유하는 곳입니다.


[cmd] findstr 한글 검색 인코딩 문제 해결
이석종  2020-05-05 18:17:40, 조회 : 240, 추천 : 45

예전보다 많이 해결은 됐지만 아직도 개발자들에게 encoding문제는 완전히 해결되지 않았습니다.

저는 윈도우 cmd창에서 findstr이라는 명령을 자주 씁니다. 여러 폴더와 파일들에서 찾는 내용의 문자가 들어있는 파일들을 찾아주는 기능인데 생각보다 요긴합니다. 그런데 문제는 또 encoding이었습니다. 가끔 분명 있는 문자인데 찾지를 못하는 걸 경험했습니다.

예를 들어 a.py안에 '내용'이라는 문자가 분명 들어있는데
findstr /si /c"문자" *.py를 하면 찾는 결과가 없다고 하는 겁니다.
쩝 결국 한글 encoding문제였습니다.

제가 만든 a.py는 utf-8로 작성되어있었고
cmd창은 기본적으로 euc-kr입니다.

그래서 type명령으로 a.py를 보면 깨져서 보입니다.

cmd창에서 encoding을 변경할 수 있습니다.
바로 chcp명령입니다.

인수 없이 chcp명령만 내리면 현재 code page number를 보여줍니다.

윈도우 10기준으로 cmd를 실행시키면 기본적으로 949입니다. euc-kr에 해당합니다.

utf-8로 변경하려면
chcp 65001을 입력하면 됩니다.

그런다음 type a.py명령으로 a.py내용을 확인해보면 아까 깨져보였던 내용이 제대로 보입니다.
  
하지만 findstr /si /c:"내용" *.py명령은 여전히 찾지를 못합니다.

코드페이지를 바꿨다고 모든 문제가 해결된 것은 아닙니다. 보여지는 code page만 바뀐 것입니다.

그래서 결국 findstr에서 자신이 원하는 한글 string을 찾는 방법은 아래의 방법밖에 없습니다. ㅠㅠ


findstr /si /g:find.txt *.py



/g옵션은 찾는 문자를 file을 이용하는 것입니다. 위의 명령은 찾는 문자열을 find.txt파일의 내용으로 지정한다는 뜻입니다. 결국 find.txt파일을 utf-8로 작성한 다음 위의 명령을 내리면 제대로 찾게 됩니다.

encoding문제 참 귀찮죠?



  추천하기   목록보기

Copyright 1999-2021 Zeroboard / skin by zero
구조설계의 미래를 준비하는 모임 [구조설계미래포럼]