새소식

Programming/VCS

[git-bash] 윈도우/리눅스에서 git diff 한글 깨짐-갱신 2020.10.16

  • -

윈도우에서 한글(cp949) 사용중인 경우

이전 내용을 오랜만에 적용해보니 한글이 일부만 표시되고 깨집니다..

그래서 인터넷을 뒤지니 LC_ALL 값을 ko_KR.UTF-8 로 주라고 하네요. 근데 이상하네요 이거 리눅스 언어 관련 환경 변수인데 이제 윈도우에서도 먹나??


잘 먹네요!! 시스템 설정에 추가해놓고 쓰시면 되겠습니다. 이제 윈도우에서는 아래 설정처럼 힘들게 할 필요가 없어졌네요!!

참고로 윈도우 버전은 10 1809 17763.1282 입니다




참조 글에서 git diff 에 영향 주는 내용만 추출


먼저 git config에 encoding 관련 설정을 추가해줍니다. i18n 섹션이 없으면 아래 내용 그대로 추가해줍니다.(commit~과 logout~ 앞의 공백은 탭)



$ git config --global --edit
[i18n]
        commitencoding = cp949
        logoutputencoding = cp949

또는

git config --global i18n.commitencoding cp949
git config --global i18n.logoutputencoding cp949

제어판>>시스템>>고급>>환경변수>>새로 만들기에서 LESSCHARSET 을 만들고 값으로 latin1을 입력.


커밋 로그가 utf-8 인경우 



$ git config --global --edit
[i18n]
        commitencoding = utf-8
        logoutputencoding = utf-8

또는

git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8


제어판>>시스템>>고급>>환경변수>>새로 만들기에서 LESSCHARSET 을 만들고 값으로 latin1을 입력.

또는

 set LESSCHARSET=utf-8


리눅스에서 한글(utf-8) 사용중인 경우

먼저 문서의 출처를 의심해봐야 합니다.. 이것 때문에 시간을 많이 잡아먹었네요 ㅜㅜ

동료가 수정한 소스를 분석하는 과정에서 위에 소개된 윈도우의 설정도 동일하게 지정했음에도 불구하고 아래처럼 한글이 깨지게 표시되는 경우가 있었습니다.

원인은 윈도우에서 수정되어 업로드 된... cp949 로 인코딩 된 파일을 열심히 utf-8 os에서 git diff를 시도한 것이었습니다...

참고로 LESSCHARSET=latin1 로 설정된 상황에서 저렇게 보이고 이마저도 설정이 안되어 있으면 한글 주석 부분이 같은 바이너리 값으로 출력이 됩니다.

문서의 코드를 알았고 os가 euc-kr로 설정되어 있고 LESSCHARSET=latin1 로 설정되어 있다면 git diff 한 상황에서 한글 주석이 정상적으로 보였을 겁니다. vim 에서 fileencodings 값에 utf-8,euc-kr 값이 포함되어 있던 탓에 vim에서는 자동 변환되어 정상적으로 보이는데 git diff 결과만 제대로 안보이는 바보같은 상황으로 몇시간을 끌고 있었습니다..

해결책은.. 문서를 강제로(!) 유니코드로 변환 저장한 다음 설정을 바꿔주었습니다.(참고 링크).

  1. 자동 변환해서 지정한 원본 인코딩대로 저장하게 해주는 fileencodings 값을 먼저 제거해줘야 합니다. 그 다음에 강제 변환 후 저장해 주면 됩니다. vim에서 다음과 같이 명령을 내리면 됩니다.
    
    :set fileencodings =
    :set fileencoding=utf-8
    :w
    

  2. git 은 기본적으로 유니코드를 사용하므로 위의 git 설정은 할 필요가 없습니다. 다만 LESSCHARSET 값을 utf-8 로 지정해야 합니다. 이 상태에서 git diff 로 메시지가 정상적으로 보이는 것을 확인했습니다.
    $ export LESSCHARSET=utf-8
    
  3. 이래도 안되는 경우는... 만약 겪거나 자세한 상황을 입수하게 되면 그 때 분석해보겠습니다.


Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.