Windows 10 명령 프롬프트에서 git 로그 출력 인코딩 문제


88

문제

git logWindows 명령 프롬프트에 명령 출력을 올바르게 표시 하는 방법은 무엇입니까?

문제로 이어지는 git 명령 시퀀스 보시다시피 분음 부호 문자를 올바르게 입력 할 수 있지만 git log출력에서 어떻게 든 이스케이프됩니다. UTF-8인코딩 테이블 에 따르면 출력에서 꺾쇠 괄호 ( <>) 사이의 코드 는 이전에 입력 한 git config매개 변수에 해당합니다 .

비슷한 문제에 대한 답변 중 하나 에서 LESSCHARSET환경 변수를 utf-8sugested 로 설정하려고 시도했지만 출력이 깨 졌습니다 .

LESSCHARSET = utf8 설정 후 git 로그 출력

예상대로 처리되므로 .git/config올바르게 인코딩 utf-8된다는 것을 알고 gitk있습니다.

적절한 gitk 출력

locale필요한 경우 다음은 명령 출력입니다.

LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=

편집하다:

출력은 순수한 git-bash 에서도 동일합니다 .

여기에 이미지 설명 입력

그래서 문제는 쉘 독립적이며 Git 또는 구성 자체와 관련이 있다고 생각합니다.


2
" Windows 명령 줄의 유니 코드 문자-방법 "에서 솔루션을 시도해 보셨습니까 ?
jthill

예, 65001 (UTF-8)을 포함한 여러 코드 페이지를 결과없이 시도했습니다. chcp 명령은 git log 출력이 표시되는 방식에 영향을 미치지 않는 것 같습니다. 항상 같은 방식으로 표시됩니다.
Marcin Kłopotek

1
질문이 어리석게 들리면 미안하지만 왜 Git Bash 대신 Windows 명령 프롬프트를 사용합니까? Git을 사용하는 데 더 적합하며, 창 크기를 전체 화면으로
조정할

@kriegaex 바보가 아닙니다. 실제로 좋습니다. 나는 일상적인 사용을 위해 ConEmu에 싸인 git-bash를 사용하고 있습니다. 결과는 동일한 i.imgur.com/hMKz9D3r.png 입니다. 나는 문제가 쉘 독립적이고 Git 또는 그 구성 자체와 관련이 있다고 믿기 때문에 사람들을 다른 종속 도구와 혼동하지 않도록 cmd.exe로 예제를 제공하는 내 문제를 설명했습니다.
Marcin Kłopotek

답변:


157

좋아, 나는 약간의 실험을했고 Windows Git 명령은 실제로 LC_ALL폴란드어 (또는 다른 UTF-8 문자)를 올바르게 표시하기 위해 UNIX 변수가 필요하다는 것을 알았습니다 . 다음 명령을 시도하십시오.

set LC_ALL=C.UTF-8

그런 다음 결과를 즐기십시오. 다음은 내 콘솔에서 발생한 일입니다 (글꼴 "Consolas", chcp필요 없음 ).

Windows 콘솔 CMD


최신 정보:

  • 음, type(콘솔에 파일 표시) 와 같은 Windows 명령이 올바르게 작동하려면 chcp 65001.
  • 그리고 cat앞서 언급 한 set LC_ALL=C.UTF-8.

Windows 콘솔 CMD, 2 부


업데이트 2 : 변경 사항을 영구적으로 적용하는 방법

사용자 mono blaine이 말했듯이 환경 변수를 만들고 전역 적으로 또는 자신의 사용자 프로필에 대해서만 LC_ALL값을 할당합니다 C.UTF-8(독일어 스크린 샷은 죄송합니다).

환경 변수 만들기

다음에 명령 프로세서 콘솔 (cmd.exe)을 열면 명령을 실행할 때 변수 값이 표시되어야합니다 echo %LC_ALL%. PowerShell에서 $env:LC_ALL.

UTF-8 코드 페이지를 영구적으로 만드는 가장 간단한 방법 은 string 유형 regeedit의 새 값 을 열고 Autorun섹션에 추가하고 값 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor을 할당하는 것입니다 chcp 65001.

등록 편집자

이제이 명령은 새 cmd.exe 콘솔을 열 때마다 실행됩니다. 새 창에서 "Aktive Codepage : 65001"이라는 출력을 볼 수도 있습니다. (또는 해당 언어로 유사).

아, 그런데 : PowerShell에서 UTF-8로 인코딩 된 파일을 올바르게 표시하려면 Get-Content -encoding UTF8 file.txt또는 cat -encoding UTF8 file.txt( PowerShell cat의 별칭)을 사용할 수 있습니다 Get-Content.


LC_ALLgit 자체에서는 set 이 필요하지 않습니다. git installaion과 함께 제공되는 다른 도구 less는 기본 호출기입니다. / core.pagerLC_ALL값을 사용하고 있음을 참조하십시오 . 다른 유효한 값은 현지화 된 언어 (예 : LC_ALL=de_DE.UTF-8독일어 용)입니다.
return42

1
다음을 사용하여 명령 줄에서 환경 변수를 설정할 수 있습니다setx LC_ALL C.UTF-8
anion

ConEmu의 Powershell 6, 추가 $env.LC_ALL='ClUTF-8'하기 에 충분 했습니다$Profile
Andrew Spencer

66

에 해당하는 PowerShell에 관심이있는 사람은 다음과 같습니다 set LC_ALL=C.UTF-8.

$env:LC_ALL='C.UTF-8'

그러나 이것은 현재 세션에서만 작동합니다. 영구적으로 만들려면 두 가지 가능성이 있습니다.

  • LC_ALL값으로 명명 된 환경 변수를 만듭니다.C.UTF-8
  • 또는 넣어 $env:LC_ALL='C.UTF-8'귀하의 $Profile파일

1
또는 PowerShell 프로필에 추가합니다 (여러 컴퓨터에서 git을 통해 동일한 프로필을 사용하기 때문에 전역 설정보다 선호합니다).
Richard

3
프로필 파일은 예를 들어 실행하여 편집 할 수 있습니다 : 모노 블레인이 제안 메모장 $ 프로파일이 그런 줄 곳을 추가, $ ENV : LC_ALL = 'C.UTF-8'
Aurstad 찢어

윈도우 10에서 PowerShell을 6 + ConEmu으로이 작품, 아무것도 다른 사람이 필요하지 않았다
앤드류 스펜서

5

내가 사용 git bashWIN10. 저는 4 가지 설정이 기대대로 등장합니다.

  • env환경. 추가 LC_ALL=C.UTF-8, LESSCHARSET=UTF-8하는 PATH전역.

  • gitconfig. git config --global i18n.logOutputEncoding utf-8.

  • git bash환경. 로 설정 Options-> Text-> Character set합니다 utf-8. 또는 설정 locale하고 Character set모두 default. 올바른 것을 선택하는 것이 충분히 현명합니다 encoding.

끝난.


나는 사용한다 git Windows 명령 프롬프트에서 사용하고 처음 두 단계는 내 사건에 대한 문제를 해결했습니다.
nglee

5

Windows 10의 Windows Terminalposh-git이 설치된 Powershell Core v7.0.3 을 통해 Git 을 사용하고 있습니다.

나는 답변을 찾아보고 많은 것을 시도했습니다. 나를 위해 일한 솔루션은 다음과 같습니다.

이러한 솔루션은 모두 개별적으로 작동합니다. 문제가 Git과 관련된 것 같고 Powershell 프로필이 깨끗하게 유지되므로 Git 명령을 사용하기로 선택했습니다.


Git 설정에 감사드립니다. Git 설정은 저에게 효과적이지만 $env:LESSCHARSET='utf-8'Windows 터미널의 PowerShell 5에서도 설정 이 잘 작동 한다는 것을 알았습니다 .
mloskot

0

기본 (Windowkey + X) 대신 Windows powershell 명령 프롬프트를 사용해야했습니다.


0

나는 리눅스에서 그런 문제가 있었다. 문제는 로케일을 생성하지 않았다는 것입니다. 그래서 내 출력은 localeUTF-8없이 모든 "C"문자를 사용할 수있었습니다. 이 문제를 해결하기 위해, 나는 주석 처리 en_US.UTF-8ru_RU.UTF-8/etc/locale.gen있다. 그런 다음 localectl set-locale LANG = ru_RU.UTF-8을 실행하고 재부팅했습니다. 그리고 시스템에 다시 로그인했습니다. 그 후 ciryllic이 정상적으로 표시되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.