Проблема
Как сделать так, чтобы git log
вывод команды правильно отображался в командной строке Windows?
пример
Как видите, я могу правильно набирать диакритические символы, но на git log
выходе это каким-то образом экранировано. Согласно UTF-8
таблице кодирования, коды между угловыми скобками ( <
и >
) на выходе соответствуют ранее введенным git config
параметрам.
Я попытался установить для LESSCHARSET
переменной среды значение, utf-8
указанное в одном из ответов на аналогичную проблему, но затем вывод искажен:
Я знаю, .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 действительно нужны переменные UNIX, например
LC_ALL
, для правильного отображения польского языка (или других символов UTF-8). Просто попробуйте эту команду:Тогда наслаждайтесь результатом. Вот что произошло на моей консоли (шрифт Consolas,
chcp
необязательно):Обновить:
type
(отобразить файл на консоли), работали правильно, вам необходимоchcp 65001
.cat
и вышеперечисленноеset LC_ALL=C.UTF-8
.Обновление 2: как сделать изменения постоянными
Как сказал пользователь моно Блейн , создайте переменную среды
LC_ALL
и присвойте ей значениеC.UTF-8
либо глобально, либо только для вашего собственного профиля пользователя (извините за скриншот на немецком языке):В следующий раз, когда вы откроете консоль командного процессора (cmd.exe), вы должны увидеть значение переменной при вводе команды
echo %LC_ALL%
. В PowerShell вы должны увидеть это при выпуске$env:LC_ALL
.Самый простой способ сделать кодовую страницу UTF-8 постоянной - это открыть
regeedit
и добавить новое значение с именемAutorun
строки типа в разделHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
и присвоить ему значениеchcp 65001
.Отныне эта команда будет выполняться каждый раз при открытии новой консоли cmd.exe. Вы даже видите его вывод в новом окне: «Aktive Codepage: 65001.» (или аналогичный на вашем соответствующем языке).
О, кстати: чтобы правильно отобразить файл в кодировке UTF-8 в PowerShell, вы можете использовать
Get-Content -encoding UTF8 file.txt
илиcat -encoding UTF8 file.txt
( в PowerShellcat
это псевдонимGet-Content
).источник
LC_ALL
не требуется самый мерзавец. Другие инструменты, поставляемые с git installaion, какless
пейджер по умолчанию / см. Core.pager , используют этоLC_ALL
значение. Другие допустимые значения - это локализованный язык, например:LC_ALL=de_DE.UTF-8
для немецкого языка.setx LC_ALL C.UTF-8
$env.LC_ALL='ClUTF-8'
к$Profile
Если кого-то интересует эквивалент PowerShell
set LC_ALL=C.UTF-8
, то это:Однако это работает только для текущего сеанса. Чтобы сделать его постоянным, есть две возможности:
LC_ALL
с именем со значениемC.UTF-8
$env:LC_ALL='C.UTF-8'
в свой$Profile
файлисточник
Пользуюсь
git bash
наWIN10
. Что касается меня, 4 настройки выглядят как мои ожидания.env
настройка. ДобавитьLC_ALL=C.UTF-8
,LESSCHARSET=UTF-8
вPATH
глобальном масштабе.git
config.git config --global i18n.logOutputEncoding utf-8
.git bash
настройка. УстановитеOptions-> Text-> Character set
наutf-8
. Или установитеlocale
иCharacter set
оба вdefault
. Достаточно умен, чтобы выбрать правильныйencoding
.Выполнено.
источник
git
командную строку Windows, и первые два шага решили проблему в моем случае.Я использую Git через Powershell Core v7.0.3 с posh-git, установленным внутри Windows Terminal в Windows 10.
Я просматривал ответы и пробовал многие из них. Для меня сработали следующие решения:
$env:LC_ALL = 'C.UTF-8'
в текущий профиль Powershellgit config --global core.pager 'less --raw-control-chars'
Оба эти решения работают отдельно. Я решил использовать команду Git, поскольку проблема, похоже, связана с Git, а профиль Powershell остается более чистым.
источник
$env:LESSCHARSET='utf-8'
отлично работает для PowerShell 5 в Терминале Windows.Мне пришлось использовать командную строку Windows PowerShell вместо стандартной (Windowkey + X)
источник
У меня была такая проблема на Linux. И проблема была в том, что я не создавал локали. Таким образом, мой вывод
locale
содержал все буквы "C" без UTF-8. Чтобы решить эту проблему, я раскомментировалen_US.UTF-8
иru_RU.UTF-8
в /etc/locale.gen. Затем я запускаю localectl set-locale LANG = ru_RU.UTF-8 и перезагружаюсь. И повторно подключился к системе. После этого кириллица отображалась нормально.источник