如何修复aHg输出编码?

时间:2011-05-05 07:28:56

标签: emacs mercurial

这是我使用的: - MacOS X 10.6.7
- GNU bash,版本3.2.48(1) - release(x86_64-apple-darwin10.0)
- Mercurial Distributed SCM(版本1.7.2 + 20101201)
- GNU Emacs 24.0.50(使用--cocoa标志从git repo构建)
- aHg v0.99

以下是我的emacs设置:

(set-default-coding-systems 'utf-8)
(prefer-coding-system 'utf-8)
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-language-environment 'UTF-8)

如果我在C-c h g s之后得到了什么:

parent: 2512:6252abcd7368 tip
 JavaScript: ???????? ???????????? ????? ? ???????.
branch: default
commit: 3 modified, 6 unknown
update: (current)

hg log下运行M-x term给了我一个正确的结果,我可以阅读(?是一个俄罗斯字符......)。那么......我如何在aHg输出中的Emacs中解决这个问题?

2 个答案:

答案 0 :(得分:0)

首先,应该在这里检查 - 在启动Emacs时设置LANG? (执行M-: (getenv "LANG")时返回什么?我记得,Mac OS X在启动板启动时将LANG设置为“C”...语言环境设置不修改LANG ...

您可以使用(setenv "LANG" "ru_RU.UTF-8")从Emacs显式设置LANG环境,或者如果可以的话,使用“en_EN.UTF-8”。

P.S。我刚用不同的LANG设置检查了ahg,当我将LANG设置为“C”时看到问号,当我在存储库中运行ahg-log时看到俄文字母

答案 1 :(得分:0)

当您执行 C-c h g s 时,可能是用于输出的默认字体不支持西里尔字符。您可以通过将该点放在未正确显示的俄语字符之一上并按 C-u C-x = 来查看正在使用的字体。为确保始终在Emacs中正确显示俄语,您可以指定所有俄语字符将以特定字体显示。由于西里尔字符在Unicode范围内U + 0400 - U + 04FF并且Arial字体似乎显示这些字符,所以您可以在Emacs init文件中尝试以下内容:

(set-fontset-font "fontset-default"
                  '(#x400 . #x4ff)
                  "Arial")