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

문제

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

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

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

예상대로 처리되므로 .git/config올바르게 인코딩 utf-8된다는 것을 알고 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 또는 구성 자체와 관련이 있다고 생각합니다.



답변

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

set LC_ALL=C.UTF-8

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


최신 정보:

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


업데이트 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.


답변

에 해당하는 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파일

답변

내가 사용 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.

끝난.


답변

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

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

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


답변

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


답변

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