西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → Cygwin設(shè)置中文使用環(huán)境、bash命令行不能輸入漢字解決方案

Cygwin設(shè)置中文使用環(huán)境、bash命令行不能輸入漢字解決方案

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2013/5/9 11:45:26字體大。A-A+

作者:西西點擊:273次評論:0次標簽: Cygwin

cygwin本地安裝版2.738 完整版
  • 類型:編程工具大小:94.0M語言:中文 評分:7.4
  • 標簽:
立即下載

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" 

unix/linux模擬環(huán)境(Cygwin)
7.5
類別: 編程輔助    大。661KB    語言: 英文
查看詳細信息 >>


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通過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)境了。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)