[问题]Emacs 无法显示中文

系统字体配置、中文显示和输入法问题
回复
头像
diabloneo
帖子: 80
注册时间: 2006-06-06 22:56
送出感谢: 0
接收感谢: 0

[问题]Emacs 无法显示中文

#1

帖子 diabloneo » 2007-03-11 17:19

今日开始学用Emacs, 版本为21.4。但是我在多语言设置里弄了半天,都没有办法在缓冲区中显示中文。例如:我在emacs中运行ls -l命令,缓冲区中的中文就显示成乱码。
头像
diabloneo
帖子: 80
注册时间: 2006-06-06 22:56
送出感谢: 0
接收感谢: 0

#2

帖子 diabloneo » 2007-03-11 20:14

我找到解决办法了,升级到Emacs23就可以了,新版本支持utf-8和GTK,除了快捷键外,鼠标和输入法操作与gedit基本上一样,还支持鼠标滚轮,实在很方便,下面是文章连接。
http://www.dirk.sh/diary/install_emacs_23_in_ubuntu_610
头像
diabloneo
帖子: 80
注册时间: 2006-06-06 22:56
送出感谢: 0
接收感谢: 0

#3

帖子 diabloneo » 2007-03-11 20:16

这是文章原文和评论(评论中也有不错的建议,一定要看)。
这里可能会看不清楚,大家还是到上面给的原文地址去看吧
=========================================================================================
emacs 目前正式发布的最新版本是 21.4,这个版本在 Ubuntu 下对中文以及中文输入法的支持多少有点问题,所以我们可以考虑从 emacs cvs 仓库中获取最新的 23.x (emacs-unicode-2) 版本,此版本很好的解决了中文显示以及 Gnome 下中文输入法的问题。以下操作基于 Ubuntu 6.10 环境:

1、从 cvs 仓库取出最新源代码:

Ubuntop:~$ set CVS_RSH="ssh"
## 如果你使用的是 Bash,使用 export CVS_RSH="ssh" 命令进行设置
Ubuntop:~$ cvs -z3 -d:ext:anoncvs@cvs.sv.gnu.org:/cvsroot/emacs co -r emacs-unicode-2 emacs

不要告诉我你的系统没有 cvs 哦,如果真的这么不幸,自己安装一下吧:

Ubuntop:~$ sudo apt-get install cvs texinfo

上述 cvs 操作会从远程 cvs 仓库取出 emacs 的最新版本,大约是 90M 左右,如果你的网速不太好,可能会很慢,也会让人很焦心,为了获得最新版本,慢慢等候吧。下载完成,我们进入到 emacs 目录进行编译和安装,不过需要预先安装一些相关的软件包(注意,如果你想要让 emacs 运行起来能像 GTK 图形应用,这些软件包是必须的):

Ubuntop:~$ sudo apt-get build-dep emacs21
Ubuntop:~$ sudo apt-get install xserver-xorg-dev
Ubuntop:~$ sudo apt-get install xorg-dev
Ubuntop:~$ sudo apt-get install libncurses5
Ubuntop:~$ sudo apt-get install libncurses5-dev

好了,我们终于要进入关键部分了:

Ubuntop:~/emacs$ ./configure --prefix=/usr --enable-font-backend --with-xft --with-freetype
Ubuntop:~/emacs$ make bootstrap
Ubuntop:~/emacs$ sudo make install

安装完成,输入 emacs 运行一个试试,看看是否有新的感觉。

想要让 emacs 显示中文,需要设置你的 ~/.Xresources 文件添加以下参数:

Emacs.Font:fontset-chinese
Emacs.Fontset-0:-*-fixed-medium-r-*-*-14-*-*-*-c-*-fontset-chinese,\
chinese-gb2312:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1,\
chinese-big5-1:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1,\
chinese-big5-2:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1

同样,为了方便使用 emacs,需要设置 ~/.emacs 文件:

(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'euc-cn)
(setq default-process-coding-system
'(euc-cn . euc-cn))
(setq-default pathname-coding-system 'euc-cn)

(global-set-key (kbd "C-SPC") 'nil)
(custom-set-variables
'(load-home-init-file t t))
(custom-set-faces)
(setq default-major-mode 'text-mode);一打开就起用 text 模式。
(global-font-lock-mode t);语法高亮
(auto-image-file-mode t);打开图片显示功能
(fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no,可能你觉得不需要,呵呵。
(column-number-mode t);显示列号
(show-paren-mode t);显示括号匹配
(display-time-mode 1);显示时间,格式如下
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(tool-bar-mode nil);去掉那个大大的工具栏
(scroll-bar-mode nil);去掉滚动条,因为可以使用鼠标滚轮了 ^_^
(mouse-avoidance-mode 'animate);光标靠近鼠标指针时,让鼠标指针自动让开
(transient-mark-mode t);
(setq x-select-enable-clipboard t);支持emacs和外部程序的粘贴
(setq frame-title-format "DIrk@%b");在标题栏提示你目前在什么位置
(setq default-fill-column 80);默认显示 80列就换行
(setq-default make-backup-files nil);不要生成临时文件

启动 emacs 后,输入 Ctrl-H 和 t 开始你的 emacs 之旅吧!

emacs 23 in Ubuntu 6.10

标签:ubuntu,emacs,23.x,中文输入

@ 2006-11-24 Friday@22:13:00 | 归于 Ubuntu Linux,开发工具 | 发表评论(7) »
7 条评论 »

1. Comments yzf [ 2006-12-13 Wednesday@21:28 ]

good! It’s useful.
2. Comments horsefaced [ 2007-01-14 Sunday@12:23 ]

实在是很有用,太谢谢了。不过有一个BUG
cvs -z3 -d:ext:anoncvs@cvs.sv.gnu.org:/cvsroot/emacs co -r emacs-unicode-2 emacs
这个CVS地址不能访问哦,实际要用
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r emacs-unicode-2 emacs
3. Comments DIrk [ 2007-01-14 Sunday@14:01 ]

To horsefaced:

-d:ext:anoncvs 表示使用ssh方式连接,如果你连接不上,可能是你的ssh没有设置好,或者选择的镜像服务器的差别。
不过也许使用pserver方式更加通用。
4. Comments horsefaced [ 2007-01-14 Sunday@14:27 ]

哦,这样子,我照你的方法全部作下来了,现在emacs可以显示与操作中文了,但奇怪的是为什么emacs保存的中文在终端上看是乱码,反过来,终端上显示为中文的在emacs下也是乱码呢?
5. Comments DIrk [ 2007-01-14 Sunday@15:22 ]

以我的Ubuntu环境为例:
终端使用的是zh_CN.UTF-8编码,这样的话,如果使用vi等纯终端命令编辑中文,实际使用的是UTF-8,而emacs,如果按照我上面的配置,默认是GB2312编码。
我这里测试的结果:
1、在终端下使用vi创建一个中文内容文件,在emacs下,默认打开是乱码,你需要设置一下让emacs认为是utf-8才能正常显示;
2、使用emacs创建一个中文内容文件,在vi中显示乱码。

你可以使用bluefish正常打开gb2312和utf-8的文件。或者我推荐使用gvim,注意,是gvim,不是vi。在gvim中通过设置: set encoding=utf-8或者 set encoding=gb2312可以正常显示相应内容。

主要是终端设置的问题。
6. Comments horsefaced [ 2007-01-14 Sunday@15:27 ]

我再次试了一下,原来这段的问题
(set-language-environment ‘Chinese-GB)
(set-keyboard-coding-system ‘euc-cn)
(set-clipboard-coding-system ‘euc-cn)
(set-terminal-coding-system ‘euc-cn)
(set-buffer-file-coding-system ‘euc-cn)
(set-selection-coding-system ‘euc-cn)
(modify-coding-system-alist ‘process ”*” ‘euc-cn)
(setq default-process-coding-system
‘(euc-cn . euc-cn))
(setq-default pathname-coding-system ‘euc-cn)
这里设置的euc-cn与系统的不一样,我系统设的是UTF8,所以保存下来的中文都是乱码了,只要把这段去除就好了。
7. Comments horsefaced [ 2007-01-14 Sunday@15:32 ]

呵呵,刚才搞这个没发现您的回复,其实把上面那些去除后,emacs会自动用utf8的。
我试了一下用gedit保存了一个GBK的文件,emacs也可以正确的打开了,看来只是终端不会自动认出编译格式来,emacs是没有问题的。
回复

回到 “字体美化和中文支持”