[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

转Utf8引来一堆乱码



事情的起因是安装Debian的Vim7之后,直接启动Gvim出现错误一处,说menu.vim的487行不是正确的菜单项,看了一下,没发现什么毛病,同时发现用非GBK编码启动就没有这个错误,也有人提议转Unicode算了。于是我就转了。

转成Utf8之后,就是全面设成zh_CN.utf8,本来LC_CTYPE还保持zh_CN,但发现这样一来Xfce4-terminal和Gnome-terminal还是用zh_CN也就是GB2312的编码,比如直接显示date是乱码,在Gterm的菜单"终端"里面设编码的地方可以看到当前编码是GB2312。所以最后把Ctype也设成了utf8。这个问题解决了。

新问题是在term里用vim编码文件存盘退出后,Term乱码了。有没有vimrc都要乱掉,实在是受不了。见图1。问了一圈还是没有解决。同时用Konsole和rxvt-unicode就不会乱,所以本来用xfce4term的,现在也改用urxvt了。谁能提点建议?

早上本来想再切回gbk算了,切回去之后,发现Term里编码已经是gbk了,可message输出又乱了,明明它也是gbk编码,可就像还在用utf8一样全乱了。见图2。与此同时,运行gvim时所有菜单都显示成????,很典型的乱码,但同时又出现了gbk编码下那个菜单项目错误。实在搞不懂,只好又回到utf8,此时什么也没改,apt输出正常,gvim的菜单也不乱了。

当然现在也能工作,只是感觉是超级不爽。问题有两个:

1、gtk2的term怎么会在vim编辑之后彻底乱掉?乱掉后接受键盘输入,但不回显,同时输出也是一堆乱码。
2、有人提到可能某些X程序在以不同于系统Locale的方式在运行?会有这样的事吗?就像图2中的输出,所有Locale项目全是gbk了。现在用的是gdm,它自己也要设语言,但每次进去X之后我也都设了同系统一样的编码,在term上输出Locale已经全部正确。但确实像Gterm会只认LC_CTYPE而忽略LANG等项目一样,我现在也怀疑某些程序可能有自己的确定编码的方法,就像gterm里运行apt的结果,以及gvim菜单一样,问题是不知道怎么设定它们。哪位给点提示?

Gmail回复最好还是回到列表,请大家一块出出主意。

--
cathayan@gmail.com
http://blog.cathayan.org

Attachment: vim-term-char.png
Description: PNG image

Attachment: term-utf2gbk-char.png
Description: PNG image


Reply to: