Может ли Git правильно отображать акценты ISO Latin 1 в терминале UTF-8?

Форк от Не отображать ^M (возврат каретки) в git вывод группы

В моем MinTTY (Cygwin в Windows) git grep вместо диакритических знаков отображаются странные символы:

введите здесь описание изображения

После проверки кажется, что тип файла:

ISO-8859 text, with very long lines, with CRLF line terminators

Пока мой MinTTY настроен как UTF-8:

# Text
Font=Powerline Consolas
FontHeight=9
BoldAsFont=yes
BoldAsColour=yes
AllowBlinking=yes
Locale=C
Charset=UTF-8

# Terminal
Term=xterm-256color

Конечно, перебирая файлы из разных репозиториев, мы никогда не знаем, в какой он кодировке.

Есть ли способ улучшить поведение Git Grep?

PS- (Дополнительный вопрос) Какова цветовая спецификация для этих акцентов (здесь они показаны желтым на синем)?


person user3341592    schedule 18.12.2019    source источник
comment
Не публикуйте изображения текста и вообще постарайтесь оставить один вопрос на вопрос   -  person D. Ben Knoble    schedule 18.12.2019
comment
Я понимаю, но трудно показать реальное впечатление от того, как это выглядит.   -  person user3341592    schedule 18.12.2019


Ответы (1)


git grep, как и grep, отображает содержимое файла так, как оно было бы в рабочем дереве, без каких-либо преобразований. Однако, в отличие от grep, он будет передавать его через меньшее количество каналов. less учитывает вашу среду для настроек локали (например, параметры LC_*) и соответствующим образом отображает данные.

Если ваша среда сообщает UTF-8 и у вас есть данные, отличные от UTF-8, less будет кодировать их так, как вы видите здесь, поскольку обычно альтернативой является либо символ замены, либо ничего, что не очень полезно при просмотре двоичного кода. файлы.

Поскольку less не знает, какая кодировка используется, а разные кодировки будут отображать один и тот же байт в разные символы Unicode и, следовательно, в разные последовательности UTF-8, автоматическое преобразование невозможно. less даже не знает, текстовый это файл или двоичный. file делает предположение о том, какой текст находится в файле, но не знает наверняка, и в общем случае различение однобайтовых кодировок требует обширных лингвистических знаний.

Итак, ваш ответ: нет, в общем случае это невозможно.

person bk2204    schedule 19.12.2019
comment
Итак, вы говорите, что это невозможно. Но возможно ли, чтобы символ отображался как произвольный символ, без вывода более четырех символов (например, <E0>) и в цвете? - person user3341592; 24.12.2019
comment
Вы можете использовать переменную окружения LESSBINFMT для управления ее отображением (см. man less), но ее невозможно отобразить, например, как символ è. - person bk2204; 24.12.2019
comment
Спасибо за полезный указатель. По крайней мере, сейчас это менее заметно... - person user3341592; 02.01.2020