我尝试通过我的Mercurial包装器库进行简单的提交,使用简单的文本Unicode:æøåÆØÅ作为我的提交消息.这将写入文本文件并使用适当的参数提供给Mercurial:
hg commit --logfile FILE
Run Code Online (Sandbox Code Playgroud)
如果我随后使用TortoiseHg查看存储库,则可以正确再现字符.在控制台上,它们被破坏了:
[C:\Temp] :hg log changeset: 0:6a0911410128 tag: tip user: Lasse V. Karlsen date: Wed Dec 01 21:48:54 2010 +0100 summary: Unicode:?ª???Ñ?å?ÿ?à
如果我将输出重定向hg log到文件,并将其打开,æøåÆØÅ则可以正确再现.
所以,我的问题是:
hg直接将日志写入文件,还是必须重定向标准输出?hg崩溃而不是仅仅破坏输出?或者就是这么简单:
以下可能无法解决问题,但可以帮助调试它.
查看:https://www.mercurial-scm.org/wiki/EncodingStrategy
如果我将hg log的输出重定向到文件,然后将其打开,则可以正确再现æøåÆØÅ.
所以至少mercurial正确地存储提交信息.它只是输出搞砸了.
有些工作沿着这些方向发生,但与此无关
[编辑:错过了你在Windows上的事实]
请参阅有关如何处理字符集兼容性问题的最后一段:https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows
它说: