Git Bash 在 Windows 7 上显示奇怪的字符

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35387667/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 14:14:34  来源:igfitidea点击:

Git Bash is displaying strange characters on Windows 7

linuxgitbash

提问by Reginaldo Marcelo dos Santos

I installed Gitbash in my Windows and defined the Linux command lines (ls to list directory for example) but the command line is returning strange characters.

我在 Windows 中安装了 Gitbash 并定义了 Linux 命令行(例如 ls 列出目录),但命令行返回奇怪的字符。

Reginaldo@Dell MINGW64 /c/dev/php/laravel/flamboyant (master)
$ php artisan
←[32mLaravel Framework←[39m version ←[33m5.1.29 (LTS)←[39m

←[33mUsage:←[39m
  command [options] [arguments]

←[33mOptions:←[39m
  ←[32m-h, --help←[39m            Display this help message
  ←[32m-q, --quiet←[39m           Do not output any message
  ←[32m-V, --version←[39m         Display this application version
  ←[32m    --ansi←[39m            Force ANSI output
  ←[32m    --no-ansi←[39m         Disable ANSI output
  ←[32m-n, --no-interaction←[39m  Do not ask any interactive question
  ←[32m    --env[=ENV]←[39m       The environment the command should run under.
  ←[32m-v|vv|vvv, --verbose←[39m  Increase the verbosity of messages: 1 for norm
al output, 2 for more verbose output and 3 for debug

←[33mAvailable commands:←[39m
  ←[32mclear-compiled←[39m      Remove the compiled class file
  ←[32mdown←[39m                Put the application into maintenance mode
  ←[32menv←[39m                 Display the current framework environment
  ←[32mhelp←[39m                Displays help for a command
  ←[32minspire←[39m             Display an inspiring quote
  ←[32mlist←[39m                Lists commands
  ←[32mmigrate←[39m             Run the database migrations
  ←[32moptimize←[39m            Optimize the framework for better performance
  ←[32mserve←[39m               Serve the application on the PHP development ser
ver
  ←[32mtinker←[39m              Interact with your application
  ←[32mup←[39m                  Bring the application out of maintenance mode
 ←[33mapp←[39m
  ←[32mapp:name←[39m            Set the application namespace
 ←[33mauth←[39m
  ←[32mauth:clear-resets←[39m   Flush expired password reset tokens
 ←[33mcache←[39m
  ←[32mcache:clear←[39m         Flush the application cache
  ←[32mcache:table←[39m         Create a migration for the cache database table
 ←[33mconfig←[39m
  ←[32mconfig:cache←[39m        Create a cache file for faster configuration loa
ding
  ←[32mconfig:clear←[39m        Remove the configuration cache file
 ←[33mdb←[39m
  ←[32mdb:seed←[39m             Seed the database with records
 ←[33mevent←[39m
  ←[32mevent:generate←[39m      Generate the missing events and listeners based
on registration
 ←[33mhandler←[39m
  ←[32mhandler:command←[39m     Create a new command handler class
  ←[32mhandler:event←[39m       Create a new event handler class
 ←[33mkey←[39m
  ←[32mkey:generate←[39m        Set the application key
 ←[33mmake←[39m
  ←[32mmake:command←[39m        Create a new command class
  ←[32mmake:console←[39m        Create a new Artisan command
  ←[32mmake:controller←[39m     Create a new resource controller class
  ←[32mmake:event←[39m          Create a new event class
  ←[32mmake:job←[39m            Create a new job class
  ←[32mmake:listener←[39m       Create a new event listener class
  ←[32mmake:middleware←[39m     Create a new middleware class
  ←[32mmake:migration←[39m      Create a new migration file
  ←[32mmake:model←[39m          Create a new Eloquent model class
  ←[32mmake:policy←[39m         Create a new policy class
  ←[32mmake:provider←[39m       Create a new service provider class
  ←[32mmake:request←[39m        Create a new form request class
  ←[32mmake:seeder←[39m         Create a new seeder class
  ←[32mmake:test←[39m           Create a new test class
 ←[33mmigrate←[39m
  ←[32mmigrate:install←[39m     Create the migration repository
  ←[32mmigrate:refresh←[39m     Reset and re-run all migrations
  ←[32mmigrate:reset←[39m       Rollback all database migrations
  ←[32mmigrate:rollback←[39m    Rollback the last database migration
  ←[32mmigrate:status←[39m      Show the status of each migration
 ←[33mqueue←[39m
  ←[32mqueue:failed←[39m        List all of the failed queue jobs
  ←[32mqueue:failed-table←[39m  Create a migration for the failed queue jobs dat
abase table
  ←[32mqueue:flush←[39m         Flush all of the failed queue jobs
  ←[32mqueue:forget←[39m        Delete a failed queue job
  ←[32mqueue:listen←[39m        Listen to a given queue
  ←[32mqueue:restart←[39m       Restart queue worker daemons after their current
 job
  ←[32mqueue:retry←[39m         Retry a failed queue job
  ←[32mqueue:subscribe←[39m     Subscribe a URL to an Iron.io push queue
  ←[32mqueue:table←[39m         Create a migration for the queue jobs database t
able
  ←[32mqueue:work←[39m          Process the next job on a queue
 ←[33mroute←[39m
  ←[32mroute:cache←[39m         Create a route cache file for faster route regis
tration
  ←[32mroute:clear←[39m         Remove the route cache file
  ←[32mroute:list←[39m          List all registered routes
 ←[33mschedule←[39m
  ←[32mschedule:run←[39m        Run the scheduled commands
 ←[33msession←[39m
  ←[32msession:table←[39m       Create a migration for the session database tabl
e
 ←[33mtracker←[39m
  ←[32mtracker:tables←[39m      Create the migrations for Tracker database table
s and columns
 ←[33mvendor←[39m
  ←[32mvendor:publish←[39m      Publish any publishable assets from vendor packa
ges
 ←[33mview←[39m
  ←[32mview:clear←[39m          Clear all compiled view files

Reginaldo@Dell MINGW64 /c/dev/php/laravel/flamboyant (master)

Can someone help me please?

有人能帮助我吗?

回答by haakym

For MingGW64 I found going into the Options > Terminal and switching from xterm(the default I presume) to xterm-256colorfixed the issue. I also restarted the console.

对于 MingGW64,我发现进入选项 > 终端并从xterm(我假设的默认设置)切换到xterm-256color修复问题。我还重新启动了控制台。

enter image description here

在此处输入图片说明

回答by David Deutsch

You need to enable ansi control code processing. See herefor details.

您需要启用ansi 控制代码处理。有关详细信息,请参见此处

By Jason Karns in shell

作者:杰森·卡恩斯 (Jason Karns)

Having used git on windows for over three years now, I've fallen back in love with the command line. Bash, of course, not the windows command prompt. Beautiful, ubiquitous, warty bash. Git depends heavily on GNU utilities so on Windows it requires either cygwin or msys. Having been burned by cygwin in the past, I prefer the minimalism and simplicity of msys + mingw. Along with git, the entire ruby ecosystem lives in the shell. However, the numerous tools, gems and utilities that assume standard ANSI color support in the shell began to wear on me. Lo and behold, there is a lovely solution to provide ansi color support for bash (and cmd) on Windows: ansicon.

在 Windows 上使用 git 已经三年多了,我重新爱上了命令行。当然,bash 不是 windows 命令提示符。美丽的,无处不在的,有疣的重击。Git 严重依赖 GNU 实用程序,因此在 Windows 上它需要 cygwin 或 msys。之前被cygwin烧过,比较喜欢msys+mingw的极简主义。与 git 一起,整个 ruby​​ 生态系统都存在于 shell 中。然而,在外壳中假设标准 ANSI 颜色支持的众多工具、宝石和实用程序开始让我感到厌烦。瞧,有一个可爱的解决方案可以为 Windows 上的 bash(和 cmd)提供 ansi 颜色支持:ansicon。

Download the zip and extract. There are a few ways to install:

下载 zip 并解压缩。有几种安装方式:

  1. Extract to a permanent location (I use C:/bin/ansicon). Execute ansicon.exe -ifrom within the appropriate directory for your system (x86/x64), and you're all set. Any new shells (bash and windows cmd included) will autorun the ansicon utility for displaying color output. Be sure not to move the executable prior to running ansicon.exe –u. This removes the registry entry and prevents an ugly error message for every command shell.

  2. Alternatively, place the ansicon executable in your PATH, or add its location to your PATH. Then you can launch ansicon for a session with ansicon.exe –p.

  1. 提取到永久位置(我使用C:/bin/ansicon)。ansicon.exe -i从系统 (x86/x64) 的适当目录中执行,一切就绪。任何新的 shell(包括 bash 和 windows cmd)都将自动运行 ansicon 实用程序以显示颜色输出。确保在运行 ansicon.exe –u 之前不要移动可执行文件。这将删除注册表项并防止每个命令外壳出现丑陋的错误消息。

  2. 或者,将 ansicon 可执行文件放在您PATHPATH. 然后你可以启动 ansicon 进行会话ansicon.exe –p

This utility has been working great for my on Windows XP. I've been having trouble getting it to work on Windows 7, but I hear it should be supported. I'll post an update when the Windows 7 issue is resolved.

这个实用程序在我的 Windows XP 上运行良好。我一直无法让它在 Windows 7 上运行,但我听说应该支持它。当 Windows 7 问题得到解决时,我会发布更新。

Update

更新

Root cause, uncovered! If you use JRuby with a 64-bit JVM on Windows x64, ansicon won't work. The issue is that ansicon (64-bit) is capable of injecting into 32-bit processes, but not vice versa. Currently, the JRuby launcher is a 32-bit executable. Thus, if you're running a 64-bit shell (cmd, bash, or otherwise), ansicon will inject correctly into that process. It will then inject successfully into the 32-bit JRuby launcher process. At this point, for all intents and purposes, you're running the 32-bit version of ansicon. Thus, if you're running JRuby on a 64-bit JVM, then 32-bit ansicon is not able to inject into 64-bit JVM. There is an open feature request for JRuby to ship its 64-bit version with a 64-bit launcher. You should vote for this feature. I also hear that adoxa (Jason Hood) has a potential fix for this issue in the works. Stay posted.

根本原因, uncovered!如果您在 Windows x64 上使用带有 64 位 JVM 的 JRuby,ansicon 将不起作用。问题是 ansicon(64 位)能够注入 32 位进程,但反之则不行。目前,JRuby 启动器是一个 32 位可执行文件。因此,如果您运行的是 64 位 shell(cmd、bash 或其他),ansicon 将正确注入该进程。然后它将成功注入 32 位 JRuby 启动程序进程。此时,出于所有意图和目的,您正在运行 32 位版本的 ansicon。因此,如果您在 64 位 JVM 上运行 JRuby,则 32 位 ansicon 无法注入 64 位 JVM。有一个开放的特性要求 JRuby 发布带有 64 位启动器的 64 位版本。您应该为此功能投票。我还听说 adoxa (Jason Hood) 有一个潜在的解决方案来解决这个问题。保持发布。

Of course, the easiest solution at the moment is to ensure that JRuby uses a 32-bit JVM. Just change (or set) your JAVA_HOMEenvironment variable to point to a 32-bit JVM and you're golden.

当然,目前最简单的解决方案是确保 JRuby 使用 32 位 JVM。只需更改(或设置)您的JAVA_HOME环境变量以指向 32 位 JVM,您就大功告成了。

Update 2: Issue Resolved

更新 2:问题已解决

The latest 64-bit binaries (ansi6432.zip) have fixed the issue. Just download and extract them over-top the 1.51 version.

最新的 64 位二进制文​​件 (ansi6432.z​​ip) 已修复该问题。只需在 1.51 版本之上下载并解压它们即可。

enter image description here

在此处输入图片说明

回答by Vijay Kumar Verma

I didn't remember the last version of GIT. I faced same problem after updating Git Bash to 2.11.

我不记得 GIT 的最后一个版本了。将 Git Bash 更新到 2.11 后,我遇到了同样的问题。

Downgrading to 2.10 solved my problem. https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1

降级到 2.10 解决了我的问题。 https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1