Unicode Mercurial提交消息和日志,支持什么编码,Hg关心吗?
我尝试通过Mercurial的包装器库进行简单的提交,将Unicode Mercurial提交消息和日志,支持什么编码,Hg关心吗?,unicode,mercurial,Unicode,Mercurial,我尝试通过Mercurial的包装器库进行简单的提交,将Unicode:æåÆØ的简单文本作为提交消息。这将写入文本文件,并通过适当的参数提供给Mercurial: hg commit --logfile FILE 如果我随后用陆龟图查看存储库,字符将正确复制。在控制台上,它们被损坏: [C:\Temp] :hg log changeset: 0:6a0911410128 tag: tip user: Lasse V. Karlsen date:
Unicode:æåÆØ
的简单文本作为提交消息。这将写入文本文件,并通过适当的参数提供给Mercurial:
hg commit --logfile FILE
如果我随后用陆龟图查看存储库,字符将正确复制。在控制台上,它们被损坏:
[C:\Temp] :hg log
changeset: 0:6a0911410128
tag: tip
user: Lasse V. Karlsen
date: Wed Dec 01 21:48:54 2010 +0100
summary: Unicode:æøåÆØÅ
[C:\Temp]:hg日志
变更集:0:6a0911410128
标签:提示
用户:Lasse V.Karlsen
日期:星期三12月1日21:48:54 2010+0100
摘要:Unicode:├ª├╕├Ñ├å├ÿ├à
如果我将hg log
的输出重定向到一个文件,并打开它,æåÆØ
被正确地复制
所以,我的问题是:
- 我可以要求
直接将日志写入文件,还是必须重定向标准输出hg
- 这是否会导致控制台的python编码出现问题,即某些字符会导致
崩溃,而不仅仅是破坏输出hg
- 我应该遵守的提交消息是否有已知的受支持编码
- Mercurial不在乎,它接受我给它的文件的内容,不管是什么内容,并将其存储为提交消息。在生成日志时,它只会将日志转储回控制台,而不会受到Python控制台输出库在这方面的任何限制
- 将控制台代码页设置为与系统代码页匹配
- 使用环境变量重写Mercurial的编码
- 设置HGENCODING将覆盖检测到的系统字符集
- 使用命令行选项覆盖Mercurial的编码
- 使用global--encoding选项将允许您在每个命令上设置首选编码
- 使用基于GUI的工具与Mercurial交互
- 这也消除了问题,完全消除了讨厌的控制台
- 使用Linux/UNIX和UTF-8
- 这让比尔·盖茨哭了
- 以下内容可能无法解决问题,但有助于调试
退房:
如果我将hg log的输出重定向到一个文件,并将其打开,则正确地再现了æåÆØØ
因此,至少mercurial正确地存储了提交信息。只有输出被弄糟了
有些工作是沿着这些路线进行的,但与此无关
hg
命令使用git bash,则可以将字符集设置为ISO-8859-1
,以修复hg日志中令人讨厌的字符
为此,单击git bash左上角的图标,转到git bash选项
*选择选项
*选择文本
*在底部,将字符集设置为ISO-8859-1
我知道这样做很痛苦,但效果很好。不适用:他在使用Windows(
C:\Temp
)@你用的是什么控制台?(您的提示符不是默认的命令提示符。)接受命令,但这有关系吗?我是从.net派生程序的,我假设它使用cmd(这很糟糕)。我明天会查的,现在就寝前在我的iPad上阅读。还要注意的是,使用提示符命令可以更改命令提示符文本,如果这是你所学的。我没有得到“比尔·盖茨”的参考。UTF-8在Windows上和在其他地方一样是事实上的标准。记事本保存UTF-8。我的编辑器保存UTF-8。Mercurial随后故意介入并把事情搞砸,以“避免让BG哭”,而让我哭。@romkyns“使用Linux/UNIX和UTF-8”的解决方案会让比尔·盖茨哭,而不是UTF-8本身。