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
Git Bash is displaying strange characters on Windows 7
提问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
回答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 并解压缩。有几种安装方式:
Extract to a permanent location (I use C:/bin/ansicon). Execute
ansicon.exe -i
from 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.Alternatively, place the ansicon executable in your
PATH
, or add its location to yourPATH
. Then you can launch ansicon for a session withansicon.exe –p
.
提取到永久位置(我使用C:/bin/ansicon)。
ansicon.exe -i
从系统 (x86/x64) 的适当目录中执行,一切就绪。任何新的 shell(包括 bash 和 windows cmd)都将自动运行 ansicon 实用程序以显示颜色输出。确保在运行 ansicon.exe –u 之前不要移动可执行文件。这将删除注册表项并防止每个命令外壳出现丑陋的错误消息。或者,将 ansicon 可执行文件放在您
PATH
的PATH
. 然后你可以启动 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_HOME
environment 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.zip) 已修复该问题。只需在 1.51 版本之上下载并解压它们即可。
回答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