Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2875212
  • 博文数量: 471
  • 博客积分: 10012
  • 博客等级: 上将
  • 技术积分: 5255
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 23:58
文章分类

全部博文(471)

文章存档

2011年(3)

2010年(61)

2009年(52)

2008年(212)

2007年(69)

2006年(74)

我的朋友

分类: LINUX

2009-01-08 23:32:59

emacs 和X程序间粘贴复制乱码解决方法
2007-05-17 07:37(一)今天终于解决了emacs中文乱码问题

历经沧桑。

过程 :
1 开始以为是因为clipboard的问题就修改
(set-clipboard-coding-system 'ctext)
(set-clipboard-coding-system 'chinese-gb2312)
都不能解决问题

2后来发现
在中有:


除了转换非 ASCII 字符的不同表示之外,编码系统还进行换行符的转换。Emacs 处理三种文件中换行的方式:新行符,回车换行,或者仅仅回车。

C-h C coding
描述编码系统 coding
C-h C
描述当前使用的编码系统
M-x list-coding-systems
显示所有支持的编码系统的列表

命令 C-h C(describe-coding-system) 显示特定编码系统的信息。您可以指定编码系统名称作为参数;或者,不指定参数,它将描述当前使用的各种编码系统,包括当前缓冲区、默认值,以及识别编码系统的优先级列表(参见识别编码)。

要显示所有支持的编码系统,输入 list-coding-systems。列表中包含了各种编码系统的信息,包括用在状态行中的代表字母(参见状态行)。

当 Emacs 无法自动选择正确的编码系统时,您可以用这些命令来指定一个:
C-x f coding
使用编码系统 coding 来查看当前缓冲区中的文件。
C-x c coding
指定下一个命令的编码系统为 coding。
C-x k coding
设置键盘输入的编码系统为 coding。
C-x t coding
设置终端输出的编码系统为 coding。
C-x p input-coding output-coding
使用编码系统 input-coding 和 output-coding 作为当前缓冲区中子进程的输入和输出。
C-x x coding
在窗口系统中与其它程序传递选中文本时使用编码系统 coding。
C-x X coding
在窗口系统中与其它程序传递下一次选中文本时(仅一次)使用编码系统 coding。

经过复制网页的文本到emacs发现开始不能识别,保存时还提示找不到合适的coding(prefer 中设置的)。保存后再打开时就正确了。通过C-h C 查寻该缓冲区的字符编码。发现是iso-2022-8bit-ss2-unix 的,而prefer中没有设置该项。
通过增加prefer coding后。保存时,果然没有提示了。
但还是出现粘贴的时候是乱码。必须保存后才可以。(这时我都有写一个函数的想法了)



3 还有几个参数没有设置,
set-buffer-file-coding-system
set-selection-coding-system
setq default-process-coding-syste
分别设置了一下发现是set-selection-coding-system 是原因所在。
设置了
(set-selection-coding-system 'iso-2022-8bit-ss2-dos)
(set-clipboard-coding-system 'iso-2022-8bit-ss2-dos)
后果然就ok了

其实(set-selection-coding-system ) 与 (set-clipboard-coding-system )都是指定一个值,设定一个就可以了。如果两个都设置了,就不要矛盾。

阅读(6363) | 评论(0) | 转发(0) |
0

上一篇:大教堂和市集

下一篇:emacs Wiki Markup

给主人留下些什么吧!~~