Запустив регулярное выражение в GIT Bash, мой файл теперь содержит забавные символы - PullRequest
1 голос
/ 26 ноября 2009

Я запустил это регулярное выражение в GIT BASH (я на машине с Windows, и у меня установлен GIT).

perl -pe 's/\[(?:xx_)?([^]]+)\]/\[\u$1\]/g'

Теперь файл выглядит так, как будто он написан на китайском языке (это файл схемы .sql).

пример:

嵛 嬀] IDENTITY(1,1) NOT NULL,

Есть ли проблема с кодировкой?

1 Ответ

2 голосов
/ 27 ноября 2009

Разве это не похоже на выпуск 358 ?

В командной строке Windows и программах с графическим интерфейсом по умолчанию используются разные кодовые страницы.
Для исторической совместимости с DOS кодовая страница командной строки («OEM») имеет значение 437 , а GUI ("ANSI") кодовая страница 1252 . Смотрите интересное чтение здесь .

Консоль использует кодовую страницу OEM (437 в моей системе), а графический интерфейс использует кодовую страницу ANSI (1252 в моей системе).
При запуске программы из консоли cmd.exe обычно не изменяет аргументы этой программы, за исключением случаев, когда программа является файлом .bat или .cmd в в каком случае cmd.exe выполняет преобразование кодовой страницы для аргументов (см. * кодовая страница Конверсии").
Так что git.exe уже получает "Daniël" в кодировке 1252, которая почему он выглядит хорошо, глядя на .git/config с помощью Блокнота.
Однако при чтении user.name преобразование кодовой страницы не происходит, и в консоли выводится «Daniël» в кодировке 1252, что приводит к «Daniδl» в моей системе.
Очевидно, что при использовании MSYS / Git Bash.

ситуация иная.

Итак, подведем итог, решение при запуске Git из cmd.exe (через оболочки .cmd) кажется, чтобы:

1) изменить шрифт консоли с растрового шрифта на шрифт True Type,
2) измените кодовую страницу консоли через "chcp", чтобы она соответствовала кодовой странице Windows (независимо от того, это может быть).


Короче говоря, скоро исправление: не могли бы вы попробовать бета-установщик Git и посмотреть, есть ли у вас проблема с кодировкой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...