cygwin\home\username\.bashrc
# 讓ls和dir命令顯示中文和顏色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 設(shè)置為中文環(huán)境,使提示成為中文
export LANG="zh_CN.GBK"
# 輸出為中文編碼
export OUTPUT_CHARSET="GBK"
cygwin\home\username\.inputrc
# 可以輸入中文
set meta-flag on
set output-meta on
set convert-meta off
# 忽略大小寫
set completion-ignore-case on
, cygwin.bat:
@ECHO OFF
SET MAKE_MODE=UNIX
SET PATH=d:\cygwin\bin;%PATH%
set HOME=d:\home
bash
2, 在~目錄下的.bashrc文件中加入:
# 讓ls和dir命令顯示中文和顏色
alias dir='dir -N --color'
alias less='/bin/less -r'
alias ls='/bin/ls -F --color=tty --show-control-chars'
# 設(shè)置為中文環(huán)境,使提示成為中文
export LANG="zh_CN.GB2312"
# 輸出為中文編碼
export OUTPUT_CHARSET="GB2312"
3,bash將到D:\home目錄下尋找初始化文件。 缺省情況下,bash命令行不能輸入漢字,必須在~目錄下建立文件.inputrc,內(nèi)容如下:
# 忽略大小寫
set completion-ignore-case on
# 可以輸入中文
set convert-meta off
set input-meta on
set output-meta on
跟emacs存在同樣的問題,就是顯示不了uft8編碼下的漢字
Cygwin工具是GNU工具在WIN32平臺上的移植版本,它盡可能地遵循POSIX標準。其中包括C/C++編譯器GCC,textutils,fileutils,bash等等。本文將闡述如何在Cygwin(B20)中使用中文。
Cygwin通過cygnus.bat(位于X:\cygnus\cygwin-b20)啟動bash,內(nèi)容如下: @ECHO OFF
SET MAKE_MODE=UNIX
SET PATH=c:\cygnus\CYGWIN~1\H-I586~1\bin;%PATH%
bash
在其中加入(bash之前)一句: set HOME=X:\homename
X:為盤符,\homename為已存在的目錄名,例如C:\myHome。bash將到X:\homename目錄下尋找初始化文件。 缺省情況下,bash命令行不能輸入漢字,必須在X:\homename目錄下建立文件.inputrc,內(nèi)容如下: set meta-flag on
set convert-meta off
set output-meta on這幾行主要是實現(xiàn)命令行上實現(xiàn)漢字的輸入以及顯示。 比如想輸入漢字的文件名等等。
注意:在Cygwin-B20中.inputrc必須為UN*X文件格式。
bash在Windows 9X中不能接受來自DOS窗口的漢字輸入。
為了讓less命令顯示漢字在X:\homename\.bashrc中加入: export LESSCHARSET=latin1
為了讓ls命令顯示漢字文件和目錄名在X:\homename\.bashrc中加入: alias ls='ls -N --color'
#====================================.bashrc 2009-10-09 cygwin 1.70==================================
# Shell Options
# #############
alias ls='ls -hF --color=tty' # classify files in colour
alias dir='ls --color=auto --format=vertical'
alias vdir='ls --color=auto --format=long'
alias ll='ls -l' # long list
alias la='ls -A' # all but . and ..
alias l='ls -CF' #
# Some example functions
# function settitle() { echo -n "^[]2;$@^G^[]1;$@^G"; }
###################### 以下為添加部分 ################################
# cygwin中取\usr\share\locale\zh_CN\LC_MESSAGES中*.mo文件,如果提示信息中
# 的字符集為utf8則會顯示有誤(不知何解?,magiclinux無類似情況),為gb2312
# 則正常,大概與gettext這個模塊有關(guān),這個模塊的作用是使linux程序提示信息
# 區(qū)域話,即不同地區(qū)用不同語言,即常說的i18n;像我們設(shè)置的zh_CN.GBK,“.”
# 之前部分“zh_CN”表示地區(qū)即“中國大陸”,后面部分“GBK”表示字符集編碼,
# 像我們下面的設(shè)置,當(dāng)程序調(diào)用時會到\usr\share\locale\目錄中查找,發(fā)現(xiàn)地
# 區(qū)為“zh_CN”則到該目錄中查找程序?qū)?yīng)的*.mo文件,*.mo文件的名稱是在調(diào)用
# 的程序中設(shè)置了的。然后取該語種的對應(yīng)提示,然后按編碼(在mo文件中指明了)
# 處理該文字。
# 當(dāng)然這些不是自動處理的,要在程序中調(diào)用像setlocale、textdomian、gettext
# 這樣的函數(shù)處理。
# 在cygwin中有些程序,做了下面的設(shè)置,因為對應(yīng)的mo文件中編碼為utf8而無法
# 顯示,我是直接將它刪除,之后程序會因為找不到mo文件而用默認的英文來顯示
# 的。(下面的編碼設(shè)置并沒有錯,應(yīng)該是cygwin程序中的BUG,只是設(shè)置了LC_ALL
# 就沒必要設(shè)LANG了,有的文檔上面這樣寫的:))
export set LC_ALL=zh_CN.GBK
export set LANG=zh_CN.GBK
#export set LC_CTYPE=zh_CN.UTF-8
#export set CHARSET=UTF-8
#==================================== bashrc end ==================================
#==================================== .inputrc ==================================
# 控制輸入輸出的文件 jiangxf [2009-10-09 星期五]
"\e[3~": delete-char
# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# kvt
"\e[H": beginning-of-line
"\e[F": end-of-line
# rxvt and konsole (i.e. the KDE-app...)
"\e[7~": beginning-of-line
"\e[8~": end-of-line
# VT220
"\eOH": beginning-of-line
"\eOF": end-of-line
# 關(guān)閉bash命令行8字節(jié)字符轉(zhuǎn)義符的轉(zhuǎn)換
set convert-meta off
# 使bash命令行支持8字節(jié)字符輸入
set input-meta on
# 使bash命令行支持8字節(jié)字符輸出
set output-meta on
如果是命令行的編碼不對也要進行更改
更改方法如下
這個是cmd窗口屬性的問題。
要修改注冊表才能解 決問題:
有兩種方法,第二種比較簡單。
方法一:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:000003a8
小說明一下:
十六進制"000003a8"或十進制"936",表示“936 (ANSI/OEM - 簡體中文 GBK)”。
十 六進制"000001b5"或十進制"437",表示“437 (OEM - 美國)
方法二:
同時使用:
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
在 注冊表里面這個東西估計是運行過英文環(huán)境的程序?qū)е碌摹?br>
刪掉這個注冊表,cmd就回到中文環(huán)境了。
|