Window上git bash命令行中文乱码问题解决方案

乱码情景一:


    当使用git log 出现乱码时,修改 %GIT_HOME%\etc\gitconfig 文件,加入如下内容:

[gui]
     encoding = utf-8
[i18n]
    commitencoding = utf-8
[svn]
    pathnameencoding = gbk

 

  修改%GIT_HOME%\etc\profile文件,加入如下内容:

export LESSCHARSET=utf-8

 

  注意:一般来说export LESSCHARSET的值就是utf-8,如果profile文件中没有这一项,请加入。

 

乱码情景二:


   当使用vi/vim 查看带有文中内容的文件时出现乱码,修改 %GIT_HOME%\share\vim\vimrc文件,在文件末尾加入如下内容:

set fileencodings=utf-8,ucs-bom,cp936,big5
set fileencoding=utf-8
set termencoding=gbk

 

乱码情景三:


使用git bash,输入中文后出现乱码,修改%GIT_HOME%\etc\inputrc文件,加入:

set output-meta on
set convert-meta off

本人使用Git-1.9.4-preview20140611的时候,以上是默认配置,无需改动。

 

乱码情景四:


在git bash中使用ls命令的时候,如果目录和文件带有中文,则会出现乱码,修改%GIT_HOME%\etc\git-completion.bash文件,在文件末尾加入:

alias ls='ls --show-control-chars --color=auto'

 

乱码情景五:


使用git status的时候,出现乱码,可以通过执行如下命令解决:

git config --global core.quotepath false


当然,看个人习惯,也可以直接使用Eclipse git插件。

如果在Intellij IDEA里使用git bash的话,使用git branch -r 命令列出git分支时,如果分支名字带有中文名的话,显示出来的还是乱码,需要修改的bash.bashrc文件,在文件末尾追加:

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

 

<think>嗯,用户问的是Java中System.out输出中文乱码问题。这个问题我之前遇到过,但得仔细想想原因和解决办法。首先,应该考虑编码问题。Java在控制台输出的时候,System.out使用的编码可能和终端的编码不一致,导致乱码。 接下来,得回忆一下System.out的默认编码。System.out是PrintStream类型,默认情况下会使用系统默认的编码。比如在Windows下可能是GBK,而Linux或Mac可能是UTF-8。如果源代码文件保存的是UTF-8,而控制台用GBK显示,就会出现乱码。 然后,用户可能是在不同的环境中运行,比如IDE或者命令行。需要分情况讨论。比如在IntelliJ IDEA里,控制台的编码设置是否正确。或者在命令行运行时,终端的编码是否匹配。 可能的解决办法有几个方面。首先检查源代码文件的编码是否和编译时的编码一致。比如用javac指定-encoding参数。其次,在输出时手动指定编码,比如用OutputStreamWriter包裹System.out,设置成UTF-8。另外,修改系统的默认编码可能有效,但不太推荐,因为会影响其他程序。 还有可能需要检查终端的编码设置。比如在Windows的CMD里,用chcp命令切换代码页到65001(UTF-8),同时设置字体支持。不过有时候CMD对UTF-8支持不好,可能需要换成PowerShell或者使用其他终端工具。 用户可能需要具体的代码示例,比如如何转换System.out的编码。比如使用System.setOut重新设置输出流,或者用BufferedWriter来包装。需要确保示例代码正确,不会引入其他问题。 另外,还要提醒用户注意不同环境下的差异,比如IDE和命令行下的不同处理方式。比如在Eclipse或IntelliJ中调整运行配置的编码设置,或者在Maven、Gradle项目中配置编译选项。 可能还需要考虑其他情况,比如网络传输或者文件输出时的编码问题,但用户当前的问题是System.out控制台输出,所以需要聚焦在此处。 最后,总结解决步骤:确认编码一致性,设置正确的编译和运行参数,调整终端编码,必要时修改代码显式指定编码。这样用户能一步步排查问题所在。</think>Java中使用`System.out`输出中文出现乱码通常由编码不一致引起,以下是逐步分析和解决方案--- ### **1. 原因分析** - **默认编码不匹配**:`System.out`底层使用`PrintStream`,默认编码由`file.encoding`系统属性决定(跟随操作系统)。 - **三处编码需一致**: - 源代码文件编码(如UTF-8/GBK) - 编译器编码(`javac -encoding`参数) - 终端/控制台编码(CMD/IDE设置的字符集) --- ### **2. 解决方案** #### **场景1:命令行运行** ```bash # 编译时指定编码(与源码一致) javac -encoding UTF-8 Main.java # 运行时指定控制台编码(Windows需额外配置) java -Dfile.encoding=UTF-8 Main ``` - **Windows CMD额外操作**: ```bash chcp 65001 # 切换控制台到UTF-8代码页 set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 ``` #### **场景2:IDE中运行** - **IntelliJ IDEA**: 1. `Settings → Editor → File Encodings`:全局/项目编码设为UTF-8 2. `Run/Debug Configurations → VM options`添加: ``` -Dfile.encoding=UTF-8 ``` - **Eclipse**: 1. `Window → Preferences → General → Workspace`:设为UTF-8 2. `Run Configurations → Common`:控制台编码选UTF-8 --- ### **3. 代码层强制指定编码** ```java import java.io.PrintStream; import java.io.UnsupportedEncodingException; public class FixEncoding { public static void main(String[] args) throws UnsupportedEncodingException { // 强制将System.out重定向为UTF-8 System.setOut(new PrintStream(System.out, true, "UTF-8")); System.out.println("中文测试"); } } ``` --- ### **4. 验证编码是否生效** ```java public class CheckEncoding { public static void main(String[] args) { System.out.println("系统默认编码: " + System.getProperty("file.encoding")); System.out.println("控制台实际编码: " + System.console().charset()); // 仅命令行有效 } } ``` --- ### **5. 特殊情况处理** - **Windows CMD限制**:建议改用PowerShell或Git Bash - **Maven/Gradle项目**: ```xml <!-- Maven编译配置 --> <project> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project> ``` --- 通过确保编码一致性(源码/编译/终端),即可解决`System.out`中文乱码问题。如仍存在问题,建议使用`System.console().writer()`或`new OutputStreamWriter(System.out, "UTF-8")`替代方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值