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.pager 가 LC_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 bash에 WIN10. 저는 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 Terminal 에 posh-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-8와 ru_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.