Vi中输入中文乱码

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding

它们的意义如下:

encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。
fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。 用英文菜单和提示最好,可以免去下面对菜单和提示信息(B,C部分)的设置如果用英文菜单和提示在安装gvim的时候,将支持本地语言的选项去掉。

解决vim文件乱码,打开文件乱码,菜单,提示信息乱码:

有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding 在linux中修改.vimrc(在win中是_vimrc)

A:设置文件的代码形式: 

set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

B:vim的菜单乱码解决: 

同样在 _vimrc文件里以上的中文设置后加上下列命令

source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

C:vim提示信息乱码的解决:

language messages zh_CN.utf-8

Git 乱码处理方法

乱码情景1

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。

解决方案:

在bash提示符下输入:

[codesyntax lang=”text”]

git config --global core.quotepath false

[/codesyntax]
core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

乱码情景2

在MsysGit中,使用git log显示提交的中文log乱码。

解决方案:

设置git gui的界面编码

[codesyntax lang=”text”]

git config --global gui.encoding utf-8

[/codesyntax]
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

[codesyntax lang=”text”]

git config --global i18n.commitencoding utf-8

[/codesyntax]
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

[codesyntax lang=”text”]

git config --global i18n.logoutputencoding gbk

[/codesyntax]
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

[codesyntax lang=”text”]

export LESSCHARSET=utf-8

[/codesyntax]

乱码情景3

在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。

解决方案:

使用?lls --show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

为了方便使用,可以编辑?/etc/git-completion.bash?,新增一行?alias ls="ls --show-control-chars"

Git乱码及解决方法

1. 系统乱码

项目中的编码统一设置为UTF-8编码。
设置系统的语言设置为 zh_UTF-8,把
export LANG=zh_CN.UTF-8
保存到~/.profile文件中。
$ env|grep LANG
LANG=zh_CN.UTF-8

2. 使用 git add 命令添加文件名含中文字符的文件时

乱码类似:
\316\304\261\276\316\304\265\265.txt
解决方案:
编辑C:\Git\etc\inputrc文件中对应的行,
查找以下2行,并修改其值,
原先:
set output-meta off?set convert-meta on
改为:
set output-meta onset convert-meta off

3. 使用git log查看含有中文的log信息时

乱码类似:
<E4><BF><AE><E6><94><B9><E6><96><87><E6><9C><AC><E6><96><87><E6><A1><A3>
解决方案:
在Bash提示符下输入:
git config –global i18n.commitencoding utf-8
git config –global i18n.logoutputencoding gbk
注:设置commit提交时使用utf-8编码,可避免Linux服务器上乱码;同时设置在执行git log时将utf-8编码转换成gbk编码,以解决乱码问题。因为windows系统默认编码为gbk。
编辑C:\Git\etc\profile文件,添加如下一行:
export LESSCHARSET=utf-8
注:以使git log可以正常显示中文(需要配合:i18n.logoutputencoding gbk)
如果系统设置了:
export LANG=zh_CN.UTF-8
则日志输出编码设置为utf-8
git config –global i18n.logoutputencoding utf-8

4. 使用ls命令查看含有中文的文件名乱码时

乱码类似:
????.txt
解决方案:
使用?ls –show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。
为了方便使用,可以编辑 C:\Git\etc\git-completion.bash 文件,添加如下一行:
alias ls=”ls –show-control-chars”

5. 在Git Gui中查看UTF-8编码的文本文件时

乱码类似:
锘夸腑鏂囨枃妗£
解决方案:
在Bash提示符下输入:
git config –global gui.encoding utf-8
注:通过上述设置,UTF-8编码的文本文件可以正常查看,但是GBK编码的文件将会乱码,所以还是没有从根本上解决问题。
可行的方法之一为:将所有文本文件的编码统一为UTF-8或GBK,然后设置相应的gui.encoding参数为utf-8或gbk。

6. git status乱码

git config –global core.quotepath false
或者编辑git配置文件:vi ~/.gitconfig
[core]
quotepath = false
作用:没有这一条,$git status输出中文会显示为UNICODE编码。

7. 回车符设置

git config –global core.autocrlf false
git config –global core.safecrlf true
或者编辑git配置文件:vi ~/.gitconfig
[core]
autocrlf = false
safecrlf = true

8. 用户信息设置

  • git config –global user.name KangLin

10.git config –global user.email kl222@126.com
或者编辑git配置文件:vi ~/.gitconfig
[user]
??? name = KangLin
??? email = kl222@126.com

11. 设置git默认编辑器

12.git config –global core.editor vim
或者编辑git配置文件:vi ~/.gitconfig
[core]
????? editor = vim

13. 彩色的 git 输出:

git config? –global color.ui true
或者编辑git配置文件:vi ~/.gitconfig
[color]
??? ui = true

14. 参考资料: