我最近收购了一台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)机器上运行得很好,但有时我需要在我离开时进行修改,这让我发疯。
提前致谢!
答案 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的任何文件,只使用了安装包。
是的,它现在可以创造奇迹。谢谢大家!