Mac OS X和Mercurial

时间:2010-09-17 16:50:47

标签: mercurial character-encoding osx-snow-leopard

我最近收购了一台MacBook。我编译了Mercurial 1.6.3,并使用NetBeans设置了所有内容。

问题是,每当我尝试提交时,由于我正在编写修订信息和我的名字带有重音字符(西班牙语),我收到的错误如下:

transaction abort!
rollback completed
abort: decoding near 'Naim? Batuta ': 'utf8' codec can't decode byte 0x8e in position 4: unexpected code byte!

我在控制台上使用了语言环境,我得到了这个:

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

我尝试设置LC_CTYPE =“C.UTF-8”,现在LC_CTYPE也变为=“C”,但Mercurial不断向我显示相同的消息。

起初我以为是NetBeans切换字符编码,但后来我尝试了一个简单的hg commit,它返回了同样的错误。

我到处都读过,虽然这些文章提到了Mercurial,Mac OS X和Python的字符编码,还有一些补丁要修复它(前一段时间,所以它们应该已经在Mercurial中),我还没有找到一个真正的解决方案。

之前发生过这件事吗?你是怎么解决的?请帮我。它在我的桌面(Windows)机器上运行得很好,但有时我需要在我离开时进行修改,这让我发疯。

提前致谢!

3 个答案:

答案 0 :(得分:1)

当我在我的mac osx上发出locale命令时,我得到以下内容

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

对你来说应该是

LANG=es_ES.UTF-8
LC_ALL=es_ES.UTF-8

你出口这些吗?因为,您的语言环境在导出后应该显示不同的值。

export LC_ALL=es_ES.UTF-8
export LANG=es_ES.UTF-8

答案 1 :(得分:0)

您的西班牙语语言环境应为es_ES.UTF-8(如果您的终端使用UTF-8)或es_ES(将使用ISO-8859-1编码)。 “C”语言环境对西班牙语的加入字符一无所知。

无论如何,如果在终端中正确设置区域设置没有用,那么您可以尝试设置

[ui]
fallbackencoding=ISO-8859-1
<。>在.hgrc配置文件中。

答案 2 :(得分:0)

不知道到底发生了什么。我从编译中删除了Mercurial的任何文件,只使用了安装包。

是的,它现在可以创造奇迹。谢谢大家!